2016-01-03 24 views
0

我有2名,我檢查,如果如果找到一個字符串列表1中含有清單2.如何從Enumerable.Any和List.Contains比較中獲取字符串值?

if (List2.Any(s => List1.Contains(s))) 
{ //do stuff 
} 

任何物品,我想記錄它串名單,但我不能找到一種方法,從上面的代碼中獲取S的值。

當我試圖寫出'S'作爲字符串的變量時,它不被識別爲一個。

如何從上述比較中獲得S的價值?

另外 - 我無法弄清楚如何把文字特別是我後來的標題。如果您有關於如何重寫標題的建議,我願意接受。我希望它對於這個問題是準確的。

+0

鑑於以下投入,產出應該如何? 'List1 = {1,2,3,3}'和'List2 = {2,3,4}}它應該是'{2,3,3}','{2,3}還是別的什麼? –

+1

改爲使用普通的foreach循環。更清晰,你可以訪問所有你需要的。 –

回答

2

Enumerable.Any需要的東西並不意味着得到什麼的被人發現,但只是的東西被發現

如果你也想發現了什麼,我相信你應該使用Enumerable.FirstOrDefault

string result = list2.FirstOrDefault(s => list1.Contains(s)); 

if(!string.IsNullOrEmpty(result)) 
{ 
    // do stuff... 
} 

在另一方面,如果你希望所有的巧合,你應該使用Enumerable.Intersect

IEnumerable<string> allCoincidences = list2.Intersect(list1); 
-1

這LINQ的將你在短短的一行

if ((from s in List2 from s1 in List1 where s == s1 select s).Any()) 
{ 
    //do stuff 
}