我想基于其值来过滤linq Lookup:
查找:
ILookup<int, Article> lookup
这是我到目前为止所做的不起作用:
IList<int> cityIndexes = GetCityIndexesByNames(cities);
lookup = lookup
.Where(p => p.Any(x => cityIndexes.Contains((int)x.ArticleCity)))
.SelectMany(l => l)
.ToLookup(l => (int)l.ArticleParentIndex, l => l);
只是为了澄清:我希望获得上述城市索引列表中包含的城市索引的所有文章。
答案 0 :(得分:6)
您发布的代码存在的问题是,您获得的所有文章与具有匹配城市索引的任何文章具有相同的ID。如果你先打开组,那就没问题了。
IList<int> cityIndexes = GetCityIndexesByNames(cities);
lookup = lookup
.SelectMany(g => g)
.Where(article => cityIndexes.Contains((int)article.ArticleCity)))
.ToLookup(article => (int)article.ArticleParentIndex);
或者
lookup =
(
from g in lookup
from article in g
where cityIndexes.Contains((int)article.ArticleCity)))
select article
).ToLookup(article => (int)article.ArticleParentIndex);