2011-03-25 86 views
4

我有一个列表,Users = new List<string>();如何在2只列出比较值

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

UsersList = new List<string>(); 

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

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

回答

10

它看起来像你对我想:

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

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

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

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

注意这不会考虑到现有项目的usersList,所以你可能有重复结束。

+0

感谢这个完成我的回答 – 2011-03-25 07:33:37

0

做一个循环上你列出 - 例如:

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

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

+2

的问题问:“我怎么能做到这一点使用LINQ? “这并没有真正的答案。 – 2011-03-25 07:23:21

+0

@布莱恩谢谢!你是如何做语法高亮的?我新来堆栈溢出。 – Xai 2011-03-25 07:23:23

+0

检查[如何格式化我的代码块?](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) – 2011-03-25 07:30:56