2010-04-15 5 views
3

Je voudrais obtenir la collection ou la liste d'objets Item, mais je reçois un tableau de tableaux maintenant.Question LinQ simple: convertir [] [] en []

Item[][] s = employees.Select(e => e.Orders.Select(o => new Item(e.ID, o.ID)).ToArray()).ToArray(); 

Quelqu'un peut-il me choisir la solution pour le faire?

P.S. solution juste LinQ :)

Répondre

5

Vous devez utiliser SelectMany pour concaténer les jeux de résultats.

var items = employees.SelectMany(e => e.Orders.Select(o => new Item(e.ID, o.ID))); 
5

Pour ce que ça vaut la peine, ce qui peut être écrit un peu plus succinctement et clairement dans la syntaxe LINQ:

var s = from e in employees 
     from o in e.Orders 
     select new Item(e.ID, o.ID); 
+1

Bien que je suis d'accord avec cela, au lieu de changer la syntaxe utilisée, je l'aurais fait valoir que 'Orders' devrait avoir une référence à 'Employee' et il n'y a pas besoin de' Item'. –

+0

+1. Notez que cette syntaxe est réellement traduite en SelectMany. Utilisez ce que vous trouvez plus lisible. Le code généré est exactement le même. – Niki