如何比较2个列表中的值

时间:2011-03-25 07:03:21

标签: c# linq

我的列表为Users = new List<string>();

我有另一个列表,List<TestList>();

UsersList = new List<string>();

我需要将Users与TestList.Name的值进行比较。如果TestList.Name中的值存在于Users中,我必须不能将它添加到UsersList,否则,我必须将它添加到UsersList。

我如何使用Linq做到这一点?

2 个答案:

答案 0 :(得分:10)

在我看来,你想要:

List<string> usersList = testList.Select(x = > x.Name)
                                 .Except(users)
                                 .ToList();

换句话说,“使用testList 中的所有用户名,除了 users中的用户名,并将结果转换为List<string>”。

假设你在usersList中没有任何东西可以开始。如果usersList已经存在且包含一些值,您可以使用:

usersList.AddRange(testList.Select(x = > x.Name).Except(users));

请注意,此不会考虑usersList中的现有项目,因此您最终可能会重复。

答案 1 :(得分:0)

在你的名单上做一个循环 - 例如:

foreach (string s in MyList)
{
   if (!MyList2.Contains(s))
   {
      // Do whatever ; add to the list
      MyList2.Add(s);
   }  
}

..这就是我如何解释你的问题