检查字符串列表中的任何项目是否不在对象列表中

时间:2013-04-02 18:03:27

标签: c# list

假设我有这个字符串列表,我用它来创建对象列表。

我的字符串列表中有171个项目,而我的对象列表有170个。所以一个没有通过,但我需要找出哪一个。

幸运的是,所有字符串都可以在每个对象的每个名称中找到。这意味着,例如:

string nameObjOne

将等于此:

public class myObj
{
    public string myName {get;set;}
}

那么如何检查我的第一个列表中的所有字符串是否都位于对象列表中,以便我可以找出哪一个不存在?

1 个答案:

答案 0 :(得分:4)

您可以使用LINQ选择List<string>List<myObj>中没有相应项目的项目:

var results = strings.Except(myObjects.Select(o => o.myName)).ToArray();

之后,您可以检查results数组的长度,以确定是否有这样的项目。

O(n + m)解决方案,因为Except实施,使用HastSet