2010-07-01 6 views
1

J'ai une liste de données structurées comme ceci:groupe et regrouper une liste d'objets

Field1 Field2 Field3 
1 1 "abc" 
1 1 "def" 
1 2 "123" 
1 2 "456" 

Je veux être en mesure de fusionner ces données, je finis donc avec un seul enregistrement par Champ1 & Champ2 et les données Field3 concaténées. Donc, dans le cas ci-dessus je voudrais obtenir:

Field1 Field2 Field3 
1 1 "abcdef" 
1 2 "123456" 

Je voudrais utiliser linq/expressions de requête pour cela.

Répondre

3
var query = 
    from row in rows 
    group row by new { row.Field1, row.Field2 } into g 
    select new RowClass 
    { 
     Field1 = g.Key.Field1, 
     Field2 = g.Key.Field2, 
     Field3 = g.Aggregate(
        new StringBuilder(), 
        (sb, grp_row) => sb.Append(grp_row.Field3)) 
        .ToString() 
    } 
+0

Merci! Je n'avais pas réalisé que vous pouviez regrouper plusieurs champs. J'essayais de faire un groupement imbriqué et d'avoir juste un bazar. – user380689

+0

Content de vous aider. Je suis d'accord que ce n'est pas une syntaxe très intuitive. –

Questions connexes