5

私はと呼ばれるクラスを持っています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を使用してそれを行う方法は?

4

1 に答える 1

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;
于 2013-10-15T08:39:37.570 に答える