2014-04-29 137 views
-2

引用列表比較的很多鏈接Compare two lists C# linq仍然我沒有清楚地列出列表之間的匹配。使用Linq比較或匹配兩個通用列表集合

Let's say I have two lists of strings: 

List1: "apple, orange, mango, bananna, butter fruit" 

List2: "butter fruit, grapes, apple, bananna, orange, mango, jack fruit, pineapple" 

在這裏,我需要檢查列表1物品是否有在列表2設置與否。如果有,則返回true否則返回false。

我試過但除了沒有得到預期的結果之間的真或假集。

if(List1.Except(List2).Count == 0) 
{ 
    .... 
} 
+1

你想獲得真正的如果list1的所有元素都在列表2,或真列表/在列表1每個元素假? – digEmAll

+0

我只需要true,如果list1項目在列表2中是prsent – venkat

+0

您要求我們診斷您的代碼*的問題,並且您甚至沒有提供不工作的代碼*。 – Servy

回答

2

與除

if(list1.Except(list2).Any()) 
{ 
    //.... 
} 

隨着所有(BOBSON的評論:被警告說,如果列表1是空的。所有()會成功,但其他兩個不會):

list1.All(str => list2.Contains(str)); 

With Any:

list1.Any(str => !list2.Contains(str)); 
+1

被警告,如果'list1'爲空,'.All()'將成功,但其他兩個不會。 – Bobson

+0

你的權利,我會編輯。 –

-1

你可以ü SE All方法:

return list1.All(list2.Contains); 
+0

+1如果列表真的很長,您可以考慮將list2推入HashSet,然後調用Contains ... – digEmAll

+0

@digEmAll這就是'Except'將爲您做的事情。 – Servy

+0

@Servy:當然是......但我覺得這段代碼更具可讀性...... – digEmAll