我有两个 LINQ 语句,我想将它们合二为一,但我无法让它正常工作。
我无法在第一个语句中进行分组。
它提示 TotalBuy
和 TotalSell
属性不存在,但没有提示 AmountTC
和 AmountAUD
.
这应该很简单。有什么想法吗?
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)))
};
作为旁注,ItineraryItemRecords
和 TransactionRecords
是由 SubSonic
处理的类的集合。
这真的应该很简单,因此我们将不胜感激。
问候, 约翰
最佳答案
一个小错误,更正:
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)))
};
我建议不要重复使用标识符 - 将有助于避免将来出现这些错误。
关于c# - LINQ JOIN + GROUP BY + SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2308374/