我有一个由以下项目组成的列表
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 and
xyz`,我该如何验证?
答案 0 :(得分:2)
如果您找到两个名称中的Intersect
,则会获得两个列表共有的名称。如果该交集与字符串列表的大小相同,则表示它们都在交集中,这意味着它们都在另一个列表中。
return list.Select(person => person.name)
.Intersect(strlst).Count() == strlst.Count();
答案 1 :(得分:1)
如果我错了,请纠正我,但我相信您最初的意图是验证lst
变量,而不是strlst
。如果它是strlist
,那么我相信@LosManos的答案是一个非常好的方法。如果您尝试使用List<person> lst
中的值验证strlst
,那么您应该执行以下操作:
var allNames = lst.Select(l => l.name);
var containsAll = strlist.All(s => allNames.Contains(s));
即使你需要比较两件以上的东西,这种方式也可以确保你能正确地做到这一点。