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?

War es hilfreich?

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())
  });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top