-5

以下の項目で構成されたリストがあります

List<person> lst = new List<person>()
lst.Add(new person(){ name="abc", age="24" });
lst.Add(new person(){ name="xyz", age="25" });
lst.Add(new person(){ name="zxc", age="28" });
lst.Add(new person(){ name="wer", age="38" });

List<string> strlst = new List<string>();
strlst.Add("abc");
strlst.Add("zxc");

今、私はリストを検証しています

lst.Exists(a => strlst.Contains(a.name))

and'abc xyz`が含まれている場合、リスト全体を検証するにはどうすればよいですか?

4

2 に答える 2

2

2つの名前のうちのを見つけると、Intersect両方のリストに共通の名前が表示されます。その交差が文字列リストと同じサイズである場合、それはそれらすべてが交差にあることを意味します。つまり、それらはすべて他のリストにあることを意味します。

return list.Select(person => person.name)
       .Intersect(strlst).Count() == strlst.Count();
于 2013-02-21T14:48:59.057 に答える
1

私が間違っている場合は訂正してください。ただし、あなたの本来の目的は、lst変数に対して検証することであり、ではないと思いますstrlst。の場合strlist、@LosManosの答えは非常に良いアプローチだと思います。List<person> lstの値で検証しようとしている場合strlstは、次のことを行う必要があります。

var allNames = lst.Select(l => l.name);
var containsAll = strlist.All(s => allNames.Contains(s));

この方法では、比較する必要のあるものが2つ以上ある場合でも、正しく実行できるようになります。

于 2013-02-21T14:49:54.847 に答える