0

我有一个具有父类和两个子类的实体,如下所示:

税务报告 --> 包裹 --> 收税员

Tax Report 包含一个 Parcel 集合,Parcel 包含一个 Tax Collector 集合。

My Tax Report 对象有 2 个 Parcel 对象与之关联,每个 Parcel 对象有 2 个 Tax Collector 对象与之关联。Tax Collector 对象有一个我感兴趣的名为 Taxes Due 的属性。以下是数据示例:

税务报告:1

包裹:0001
税务员:达拉斯县,应缴税款 100 美元
税务员:科林县,应缴税款 50 美元

包裹:0002
税务员:科林县,应缴税款 1000 美元
税务员:欧文市,应缴税款 100 美元

我想查询我的对象以汇总按税收员分组的所有包裹的应缴税款。这是我希望我的结果如下所示:

达拉斯县,100 美元
科林县,1050
美元 欧文市,100 美元

我已经尝试过以下方法: var taxsummary = from tr in taxreport.Parcel.Select(y=>y.TaxCollector).Select(n=>n.TaxesDue).Sum()

但我没有任何运气。我的结果总是被预测为一个多层次的集合,每个包裹下方的应缴税款,而不是按税务员分组。有任何想法吗?

谢谢,布拉德

4

1 回答 1

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);
于 2013-04-25T18:33:30.923 回答