En utilisant les expressions lambda pour obtenir un sous-ensemble où les éléments du tableau sont égaux

J'ai un problème intéressant, et je n'arrive pas à comprendre l'expression lambda pour faire ce travail.

J'ai le code suivant:

List<string[]> list = GetSomeData(); //Returns large number of string[]'s
List<string[]> list2 = GetSomeData2(); //similar data, but smaller subset
&nbsp;
List<string[]> newList = list.FindAll(predicate(string[] line){ 
    return (???);
});

Je veux retourner uniquement les enregistrements dans la liste dans laquelle l'élément 0 de chaque string[] est égal à celui de l'élément 0 est dans la liste 2.

liste contient les données comme ceci:

"000", "Data", "more data", "etc..."

liste 2 contient des données comme ceci:

"000", "different data", "even more different data"

Fondamentalement, je pourrais écrire ce code comme ceci:

List<string[]> newList = new List<string[]>();
foreach(var e in list)
{
    foreach(var e2 in list2)
    {
        if (e[0] == e2[0])
            newList.Add(e);
    }
}
return newList;

Mais, je vais essayer d'utiliser des génériques et lambda est plus, donc, je suis à la recherche d'un bien propre solution. C'est frustrant moi mais.. peut-être Trouver à l'intérieur d'un Trouver?

EDIT:
La réponse de Marc-dessous m'amènent à expérimenter avec une varation qui ressemble à ceci:

var z = list.Where(x => list2.Select(y => y[0]).Contains(x[0])).ToList();

Je ne suis pas sûr de savoir comment efficace c'est, mais il fonctionne et est assez succincte. Quelqu'un d'autre avez des suggestions?

OriginalL'auteur Erik Funkenbusch | 2009-02-15