字符串[]中的部分匹配

时间:2010-10-10 20:51:12

标签: c# linq

我有两个字符串数组;一个是list,另一个是find

我希望能够使用扩展方法和linq计算find中部分包含在“list”中的项目数。以下是我将如何在几个嵌套循环中执行此操作的摘要:

int Count = 0;

foreach (string f in find)
{
    foreach (string l in list)
    {
         if (l.Contains(f))
         {
              Count++;
              break;
         }
    }
}

return Count;

我希望能够做到这样的事情:

int Count = list.Select(...);

在我的实际应用中,list是类型IQueryable<string>的linq查询中的元素,find是静态string[]。我希望能够在linq中执行上述计数。我知道我可能不得不使用.AsEnumerable(),因为解决方案可能无法转换为SQL。

2 个答案:

答案 0 :(得分:3)

int count = find.Count(f => list.Any(s => s.Contains(f)));

答案 1 :(得分:1)

var count = (
  from f in find
  where list.Any(l => f.Contains(l))
  select f).Count();