2016-01-03 77 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 
}