2017-12-05 3 views
1

Mit dieser Abfrage zählen:LINQ-Gruppe durch und verkettete Ausgabe

foreach(var y in items) 
{ 
     <div>@y.fieldA => @y.FieldB</div> 
} 

ich diese Ausgabe:

3 => 2 
3 => 1 
2 => 2 
3 => 2 

ich in LINQ wissen wir leicht mit dieser zählen und Gruppe kann:

foreach(var y in items.GroupBy(g => g.Field) 
         .Select(group => new {Field = group.Key, count = group.Count()})) 
{ 
    <div>@y.Field : @y.count</div> 
} 

Aber wie kann ich dies an den verketteten Ausgang anpassen, so dass ich dieses Ergebnis erhalten kann:

3 => 2 : 2 
3 => 1 : 1 
2 => 2 : 1 
+2

Was '.Field' im letzten Code ist Schnipsel? –

+0

Bitte zeigen Sie uns, was "Gegenstände" sind. Ich meine, es ist klar, dass es ein 'IEnumerable ' ist, so zeigen Sie bitte die Definition von 'T' –

+0

.Feld ist die Spalte gruppiert und gezählt werden. var items = AsDynamic (App.Data ["Daten"]) –

Antwort

1

Verwenden Select die gewünschte Zeichenfolge statt Projizieren ein anonymes Objekts zu projizieren:

foreach(var item in items.GroupBy(g => $"{g.FieldA} => {g.FieldB}") 
         .Select(g => $"{g.Key} : {g.Count()}")) 
{ 
    <div>@item</div> 
} 

Für eine pre C# 6.0 Version:

foreach(var item in items.GroupBy(g => g.FieldA + " => " + g.FieldB) 
         .Select(g => g.Key + " : " + g.Count())) 
{ 
    <div>@item</div> 
} 
+0

Fehler CS1056: Unerwartetes Zeichen '$' –

+0

@ JoãoGomes - siehe Update –

+0

Es funktioniert. Vielen Dank. –