LINQ IEnumerable在IEnumerable中 [英] LINQ IEnumerable within a 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屋!