【发布时间】:2011-10-22 22:48:04
【问题描述】:
我正在为 Linq 使用 GroupBy。我想我不能用一种表达方式做到这一点,但不知道如何解决问题。
我有以下两个课程:
public class Shipment {
public string PortOfOrigin{get;set;}
public string PortOfDestination{get;set;}
public ICollection<Invoice> Invoices{get;set;}
}
public class Invoice{
public string InvoicePeriod {get;set;}
public decimal Amount {get;set;}
}
我有一个货件集合,它们都有一个发票集合。这是一个例子。
List<Shipment> shipments = new List<Shipment>
{
new Shipment { PortOfOrigin = "USLOS", PortOfDestionation = "UKLON",
Invoices = new List<Invoice>
{
new Invoice{InvoicePeriod = "201106", Amount = 1000},
new Invoice{InvoicePeriod = "201106", Amount = 2000},
new Invoice{InvoicePeriod = "201107", Amount = 1000}
}
},
new Shipment { PortOfOrigin = "USLOS", PortOfDestionation = "UKLON",
Invoices = new List<Invoice>
{
new Invoice{InvoicePeriod = "201106", Amount = 3000},
new Invoice{InvoicePeriod = "201107", Amount = 2000}
}
},
new Shipment { PortOfOrigin = "USDAL", PortOfDestionation = "UKLON",
Invoices = new List<Invoice>
{
new Invoice{InvoicePeriod = "201106", Amount = 3000}
}
}
};
现在我想按以下方式分组:
Shipment.PortOfOrigin、Shipment.PortOfDestionation、Shipment.Invoices.InvoicePeriod。
所以我想要这样的结果
PortOfOrigin PortOfDestination InvoicePeriod Amount
------------------------------------------------------------------------
USLOS UKLON 201106 6000
USLOS UKLON 201107 3000
USDAL UKLON 201106 3000
这甚至可以在我想在 Invoices.InvoicePeriod 上分组的地方进行这样的分组吗?
【问题讨论】:
-
+1 用于示例数据和您想要的结果示例。很少有这样清晰明确的问题 :-)
标签: c# group-by linq-to-objects