如何比较两个列表中的值

4

我有一个列表,如下:Users = new List<string>();

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

UsersList = new List<string>();

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

如何使用Linq实现这一点?

2个回答

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中已经存在的项,因此可能会出现重复。


0
在你的列表上进行循环 - 例如:
foreach (string s in MyList)
{
   if (!MyList2.Contains(s))
   {
      // Do whatever ; add to the list
      MyList2.Add(s);
   }  
}

这是我理解你问题的方式


2
问题是“我如何使用Linq来做到这一点?”但这并没有真正回答问题。 - Jon Skeet
@Brian 谢谢!你是如何实现语法高亮的?我是 Stack Overflow 的新手。 - Xai
请查看如何格式化我的代码块? - Vikas Patidar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接