Ich habe diese Struktur
Customer
- has many Orders
- has many OrderItems
Ich möchte eine Liste von CustomerItems
via LINQ mit einer Teilmenge von OrderItems
:
List of new { Customer, List<OrderItem> Items }
Dies ist eine Gruppierung aller Artikel, die ein Kunde aus der Teilmenge der Artikel bestellt hat
Wie kann ich mit LINQ die Bestellung zurückverfolgen und nach Kunden gruppieren, um dieses Objekt zu generieren?
Bisher bin ich auf so etwas
items
.GroupBy(i => i, i => i.Order.Customer, (i, customer) => new {customer, i})
Aber das ist offensichtlich keine Liste. Ich schätze, ich brauche irgendwo ein SelectMany, könnte aber einige Hinweise gebrauchen.
Items
Eigenschaft des anonymen Typs eine Liste sein.Das könnte dir auch gefallen
var Grp = Model.GroupBy(item => item.Order.Customer) .Select(group => new { Customer = Model.First().Customer, CustomerId= group.Key, Orders= group.ToList() }) .ToList();
quelle
item.Field<>
und nicht.Order
zum Beispiel? Ich verwende eine DataTable.Sie können es mit Gruppenbeitritt erreichen
var result = (from c in Customers join oi in OrderItems on c.Id equals oi.Order.Customer.Id into g Select new { customer = c, orderItems = g});
c ist Kunde und g ist der Kunde, der Artikel bestellt.
quelle