Share via


GQ08 II: combinaisons

Encore un petit assez simple mais attention, bonus pour celui qui l'écrit en C# classique sans utiliser la 'sugar syntax' de Linq.
Je voudrais lister l'ensemble des associations possibles avec les éléments de ces deux tableaux.

 var values1 = new string[] { "1", "2", "3" };
var values2 = new string[] { "A", "B" };

var q = ?

foreach (var v in q)
    Console.WriteLine(v);

image

Mitsu

Comments

  • Anonymous
    August 06, 2008
    PingBack from http://blog.a-foton.ru/2008/08/gq08-ii-combinaisons/

  • Anonymous
    August 06, 2008
    public static IEnumerable<string> Combinaisons(IEnumerable<string> values1, IEnumerable<string> values2) {    foreach (string v1 in values1)        foreach (string v2 in values2)            yield return string.Concat(v1, v2); } var q = Combinaisons(values1, values2);

  • Anonymous
    August 06, 2008
    Sinon en LINQ ça donnerait ça : var q = from v1 in values1        from v2 in values2        select string.Concat(v1, v2);

  • Anonymous
    August 06, 2008
    Eh oh Matthieu, on n'est pas la pour faire du C# 2.0 ! :p J'attends une écriture plus moderne, cependant je reviendrai sur ta solution un peu plus tard.

  • Anonymous
    August 06, 2008
    C'est sûrement pas ce que t'attend mais tu peux faire ça : var values1 = new string[] { "1", "2", "3" }; var values2 = new string[] { "A", "B" }; Array.ForEach(values1, v1 => Array.ForEach(values2, v2 => Console.WriteLine(string.Concat(v1, v2))));

  • Anonymous
    August 06, 2008
    var q = values1.SelectMany(v1 => values2.Select(v2 => string.Concat(v1, v2)));

  • Anonymous
    August 06, 2008
    Mais Mathieu, laisse moi répondre un peu ^^ c'est bien : var q = values1.SelectMany(digit =>    values2.Select(c => digit+c)); (SelectMany transforme un IEnumerable<IEnumerable<T>> en IEnumerable<T>)

  • Anonymous
    August 06, 2008
    Comment lit on "en français" le code donné par Mathieu ? Merci, j'ai un peu de mal.

  • Anonymous
    August 07, 2008
    Voici la réponse au précédent Quizz . Pour la version simple: var q = from v1 in values1 from v2 in values2

  • Anonymous
    August 18, 2008
    Bon, j'arrive après la bagarre, mais voilà ma solution sans le "syntax sugar" ;) var q = values1.Join(values2, s => 1, s => 1, (s1, s2) => s1 + s2); (un peu brutal, certes...)