2010-10-10 5 views
3

J'ai deux tableaux de chaînes; l'un est list et l'autre est findCorrespondances partielles dans une chaîne []

Je veux pouvoir compter le nombre d'éléments dans find qui sont partiellement contenus dans 'list' en utilisant les méthodes d'extension et linq. Voici un résumé de la façon dont je le ferais dans quelques boucles imbriquées:

int Count = 0; 

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

return Count; 

Je voudrais pouvoir faire quelque chose comme:

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

Dans ma demande réelle, list est un élément dans une requête linq de type IQueryable<string> et find est un string[] statique. J'aimerais pouvoir effectuer le compte ci-dessus dans linq. Je sais que je devrai probablement utiliser .AsEnumerable() comme quoi la solution ne sera probablement pas traduite en SQL.

Répondre

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

Le premier 'l' devrait effectivement être' list' – Shawn

+0

@Shawn fixé il –

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

Merci pour la syntaxe étendue – Shawn

Questions connexes