我有一个带有父类和两个子类的实体,如下所示:
税务报告 - >包裹 - >税务员
税务报表包含一组Parcel,而Parcel包含一个Tax Collector集合。
我的Tax Report对象有2个与之关联的Parcel对象,每个Parcel对象都有2个与之关联的Tax Collector对象。 Tax Collector对象有一个名为Taxes Due的属性,我感兴趣。这是一个数据示例:
TaxReport:1
包裹:0001
税务员:达拉斯县,税款为100美元
税务员:科林县,50美元到期税款
包裹:0002
税务员:科林县,1000美元到期税
税务员:欧文市,100美元到期税款
我想查询我的对象,以便按税收收集器分组所有包裹的应纳税额。这就是我想要的结果:
达拉斯县,100美元 科林县,1050美元 欧文市,100美元我尝试过以下几点: var taxsummary = from taxreport.Parcel.Select中的tr(y => y.TaxCollector).Select(n => n.TaxesDue).Sum()
但我没有运气。我的结果始终被预测为多级集合,每个包裹下面都有Taxes Due,而不是按税收收集器分组。有什么想法吗?
谢谢, 布拉德
答案 0 :(得分:0)
这就是诀窍:
var grouped = from parcel in taxReport.Parcels
from taxCollector in parcel.TaxCollectors
group taxCollector by new
{
Name = taxCollector.Name // Or whatever makes it Unique...
};
foreach(var collectorGroup in grouped)
{
Console.WriteLine(collectorGroup.Key.Name + " : " + collectorGroup .Sum(p => p.TaxesDue));
}
如果您想要类似字典的内容,您可以这样做:
var grouped = (from parcel in taxReport.Parcels
from taxCollector in parcel.TaxCollectors
group taxCollector by new
{
Name = taxCollector.Name
}
into groupedCollectors
select new
{
Name = groupedCollectors.Key.Name,
TaxesDue = groupedCollectors.Sum(p => p.TaxesDue)
})
.ToDictionary(p =>p.Name, p => p.TaxesDue);