-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))

如果它包含“abc xyz”,我如何验证整个列表and

4

2 回答 2

2

如果您找到Intersect两个名称中的一个,您将获得两个列表共有的名称。如果该交集与您的字符串列表的大小相同,则意味着它们都在交集中,这意味着它们都在另一个列表中。

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

如果我错了,请纠正我,但我相信您的初衷是针对您的lst变量进行验证,而不是strlst. 如果是 for strlist,那么我相信@LosManos 的回答是一个非常好的方法。如果您尝试List<person> lst使用其中的值进行验证,strlst那么您应该执行以下操作:

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

即使您需要比较两个以上的东西,这种方式也可以确保您可以正确地做到这一点。

于 2013-02-21T14:49:54.847 回答