LINQ IEnumerable在IEnumerable中 [英] LINQ IEnumerable within a IEnumerable

查看:93
本文介绍了LINQ IEnumerable在IEnumerable中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我想要一个简单快捷的方式(不必使用两个foreach循环)来检索符合我标准的对象:



我有一个IEnumerable的< newsitem> currentNews;



a NewsItem对象的属性为IEnumberable< subscribers> ;;

在Subscribers对象中有一个属性为Id;



i希望在currentNews中检索所有NewsItem对象,其中NewsItem.Subscribers'id = 5



so本质上是NewsItem.Subscribers.Id = 5(但我知道这不是正确的语法)。



我也只想要currentNews中的前5个对象,代码为当下(没有下面的订阅者标准)。



Hi Guys i'm wanting a simple and quick way (without having to use two foreach loops) to retrieve objects that match my criteria:

I have a IEnumerable<newsitem> currentNews;

a NewsItem object has a property of IEnumberable<subscribers>;
inside the Subscribers objects there is a property of Id;

i would like to retrieve all the NewsItem objects in currentNews where the NewsItem.Subscribers' id = 5

so essentially NewsItem.Subscribers.Id = 5 (but i know this is not correct syntax).

I also am only wanting the first 5 objects in the currentNews, code at the moment (without the subscribers criteria below).

IEnumerable<NewsItem> currentLanguageNews = newsItemCollection._newsItems.Where(n => n.Language == language);
            int i = 0;
            List<INewsItem> latestNews = new List<INewsItem>();
            foreach (INewsItem newsItem in currentLanguageNews)
            {
                if (i < 5)
                {
                    i++;
                    latestNews.Add(newsItem);
                }
                else
                {
                    break;
                }
            }

推荐答案

所以你想要获取当前语言的前5个新闻项目,以及然后过滤掉订阅者5未订阅的任何地方?

So you want to take the top 5 news items for the current language, and then filter out any where subscriber 5 isn't subscribed?
IEnumerable<NewsItem> result = newsItemCollection._newsItems
    // Filter by language:
    .Where(n => n.Language == language) 
    // Take the first 5 items:
    .Take(5) 
    // Only items where subscriber 5 is subscribed:
    .Where(n => n.Subscribers.Any(s => s.Id == 5))
;



如果您想为订阅者选择前5项,请移动 Take 在第二个 Where 之后调用。


这篇关于LINQ IEnumerable在IEnumerable中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆