【问题标题】:LINQ JOIN + GROUP BY + SUMLINQ JOIN + GROUP BY + SUM
【发布时间】:2010-02-22 01:54:49
【问题描述】:

我想将两个 LINQ 语句合二为一,但在我的一生中我无法让它发挥作用。

我无法让分组在第一个语句中起作用。 它抱怨TotalBuyTotalSell 属性不存在,但没有抱怨AmountTCAmountAUD

这应该很简单。有什么想法吗?

var itineraryItems =
    from ii in this.ItineraryItemRecords
    join t in this.TransactionRecords on ii.OperatorID equals t.
    TransactionActor.OperatorID into g select new {
    OperatorID = ii.OperatorID, TotalBuy = g.Sum(i = >ii.TotalBuy)
        , TotalSell = g.Sum(i = >ii.TotalSell)
        , PaidTC = (0 - (g.Sum(t = >t.AmountTC)))
        , PaidAUD = (0 - (g.Sum(t = >t.AmountAUD)))
};

var itineraryItemz =
    from i in itineraryItems group i by i.OperatorID into g select new {
    OperatorID = g.Key, TotalBuy = g.Sum(i = >i.TotalBuy)
        , TotalSell = g.Sum(i = >i.TotalSell)
        , PaidTC = (0 - (g.Sum(i = >i.PaidTC)))
        , PaidAUD = (0 - (g.Sum(i = >i.PaidAUD)))
};

附带说明,ItineraryItemRecordsTransactionRecords 是由 SubSonic 处理的类的集合。

这真的应该很简单,所以任何帮助将不胜感激。

问候, 约翰

【问题讨论】:

  • @JohnBob - 我用 c# 标签重新标记了你的问题,以便它可能会得到更多的注意,因为还没有人回应。

标签: c# linq group-by sum aggregate


【解决方案1】:

一个小错误,已更正:

var itineraryItems = from ii in this.ItineraryItemRecords 
   join t in this.TransactionRecords on ii.OperatorID equals t.TransactionActor.OperatorID 
   into g 
   select new 
   { 
       OperatorID = ii.OperatorID 
       //, TotalBuy = g.Sum(i => ii.TotalBuy) 
       , TotalBuy = g.Sum(i => i.TotalBuy) 
       //, TotalSell = g.Sum(i => ii.TotalSell) 
       , TotalSell = g.Sum(i => i.TotalSell) 
       , PaidTC = (0 - (g.Sum(t => t.AmountTC))) 
       , PaidAUD = (0 - (g.Sum(t => t.AmountAUD))) 
   }; 

我建议不要重复使用标识符——这将有助于避免将来出现这些错误。

【讨论】:

  • 您好,感谢两位的帮助,感谢您的评论。不幸的是,我把这段代码扔进去了,但它不起作用。它抱怨 TotalBuy 和 TotalSell。 “无法解析符号 TotalBuy”“ResSystem.Library.Objects.Transaction”不包含“TotalBuy”的定义,并且没有扩展方法“TotalBuy”接受“ResSystem.Library.Objects.Transaction”类型的第一个参数我的语法错了吗?
  • 没关系。我最终将其拆分为三个单独的查询。两个 group by 查询,然后一个加入这两个 group by 查询。
猜你喜欢
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
相关资源
最近更新 更多