Einfachste Art und Weise der Gruppierung / Projektion auszuführen Objekte mit Linq To
-
02-10-2019 - |
Frage
Ich erhalte Daten aus der Datenschicht, dass ich in der mittleren Ebene zu transformieren muß mithilfe von Linq to Objects (ich nicht kontrollieren, dass die Stufe der Anwendung). Ich habe eine Gruppierungsoperation unter Verwendung mehrerer Schlüssel, die von einer String-Verkettung auf den nicht-Schlüsselfeldern gefolgt auszuführen. In Anbetracht der unten aufgeführten Daten, möchte ich zu einer Gruppe von CustomerID und Datum, und erstellen Sie eine neue Struktur, bei der nur eine einzige Zeile auf dem Schlüssel generiert basiert, und das nicht Schlüsselfeld (in diesem Fall Artikel) wird in einen String kombiniert:
CustomerID Date Item
A 11/1/2001 Bread
A 11/1/2001 Orange Juice
A 11/1/2001 Salad Dressing
B 11/1/2001 Bananas
C 5/6/2001 Candy
C 12/8/2005 Candy
CustomerID Date Item
A 11/1/2001 Bread
Orange Juice
Salad Dressing
B 11/1/2001 Bananas
C 5/6/2001 Candy
C 12/8/2005 Candy
Ist das möglich, die funktionale Stil Linq-Syntax oder habe ich zu dem alten Schule greifen unbedingt foreach-Syntax?
Lösung
So etwas wie das?
var result = from item in items
group item by new { item.Date, item.CustomerID } into g
select new
{
g.Key.CustomerID,
g.Key.Date,
Item = string.Join(", ", from i in g select i.Item)
};
Andere Tipps
Alternativ:
var results = items
.GroupBy(i => new { i.Date, i.CustomerID })
.Select(g => new {
CustomerID = g.Key.CustomerID,
Date = g.Key.Date,
Item = string.Join(", ", g.Select(i => i.Item).ToArray())
});