我有一个名为Item
的课程:
public sealed class Item
{
public int Id { get; set; }
public string Name { get; set; }
public List<Language> Languages { get; set; }
}
和
public sealed class Language
{
public int Id { get; set; }
public string Code { get; set; }
}
我希望根据匹配语言获取Item
的列表。
所以:
string currentLangCode = "EN";
List<Item> items = GetListOfItems();
// that's not correct, I need an advice here
var query = from i in items
where ( i.Languages.Select(l=>l).Where(l=>l.Code.Equals(currentLangCode) )
select i;
如果项目列表的子列表(表示语言列表)包含currentLanguage
,我想过滤项目列表。
如何使用LINQ做到这一点?
答案 0 :(得分:16)
var filtered = GetListOfItems().Where(x => x.Languages.Any(l => l.Code == currentLangCode));
仅供参考,您现有的解决方案并不遥远,您需要做的就是摆脱不必要的Select(...)
电话,即使您拥有它。
var filtered = from i in GetListOfItems()
where i.Languages.Any(l => l.Code == currentLangCode)
select i;