Question

J'ai une question sur la façon de faire une tâche de programmation commune dans LINQ.

permet de dire que nous avons fait différentes collections ou tableaux. Ce que je voudrais faire est des éléments de correspondance entre les tableaux et s'il y a un match alors faire quelque chose avec cet élément.

par exemple:

        string[] collection1 = new string[] { "1", "7", "4" };
        string[] collection2 = new string[] { "6", "1", "7" };

        foreach (string str1 in collection1)
        {
            foreach (string str2 in collection2)
            {
                if (str1 == str2)
                {
                    // DO SOMETHING EXCITING///
                }
            }
        }

Cela peut évidemment être réalisé en utilisant le code ci-dessus, mais ce que je me demande s'il y a un moyen rapide et soigné, vous pouvez le faire avec LinqtoObjects?

Merci!

Était-ce utile?

La solution

Oui, Intersection - Exemple de code pour illustrer

.
string[] collection1 = new string[] { "1", "7", "4" };
string[] collection2 = new string[] { "6", "1", "7" };

var resultSet = collection1.Intersect<string>(collection2);

foreach (string s in resultSet)
{
    Console.WriteLine(s);
}

Autres conseils

Si vous voulez exécuter du code arbitraire sur les matchs, alors ce serait un moyen LINQ-y pour le faire.

var query = 
   from str1 in collection1 
   join str2 in collection2 on str1 equals str2
   select str1;

foreach (var item in query)
{
     // do something fun
     Console.WriteLine(item);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top