2010-10-10 137 views
3

我有兩個字符串數組;一個是list另一個是find字符串中的部分匹配[]

我希望能夠使用擴展方法和linq來計算查找中部分包含在「列表」中的項數。下面是我會怎麼幾個嵌套循環內做一個總結吧:

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>find類型的linq查詢中是一個靜態的string[]。我希望能夠在linq中執行上面的計數。我知道我可能必須使用.AsEnumerable(),因爲解決方案可能無法轉換爲SQL。

回答

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

第一'l'實際上應該是'list' – Shawn 2010-10-10 22:04:05

+0

@Shawn固定它 – 2010-10-10 22:25:17

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

感謝您的擴展語法 – Shawn 2010-10-11 03:19:41