2011-03-25 127 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