C# Linq to SQL不会对所有行求和

C# Linq to SQL不会对所有行求和,c#,linq-to-sql,C#,Linq To Sql,我有以下Linq到SQL查询: Logs .GroupBy(g => new { g.DateStamp.Date, g.Result, g.ConversionCost} ) .Select(s => new {Date = s.Key.Date, s.Key.Result, Cost = s.Sum(sum=>sum.ConversionCost), Count = s.Count()}) .OrderByDescending(o=>o.Date) 而且它没有给出期

我有以下Linq到SQL查询:

Logs
.GroupBy(g => new { g.DateStamp.Date, g.Result, g.ConversionCost} )
.Select(s => new {Date = s.Key.Date, s.Key.Result, Cost = s.Sum(sum=>sum.ConversionCost), Count = s.Count()})
.OrderByDescending(o=>o.Date)
而且它没有给出期望的结果。s.Sumsum=>sum.ConversionCost不会对g.ConversionCost组中的所有数字求和

上图显示了结果,但按g.ConversionCost分组时,日期字段包含重复项

如果我从分组中删除g.ConversionCost并从选择中删除SUM

Logs
.GroupBy(g => new { g.DateStamp.Date, g.Result} )
.Select(s => new {Date = s.Key.Date, s.Key.Result, Count = s.Count()})
.OrderByDescending(o=>o.Date)
我得到了正确的结果

g、 ConversionCost字段是数值int32值NotNull,我不明白为什么分组和求和会在最终结果中得到重复的值。有什么想法吗

如果我从分组中删除g.ConversionCost,从选择中删除SUM,我将得到正确的结果

从分组中删除g.ConversionCost正是使其按预期工作的原因,而删除总和则不是

您遇到的问题是,您将有一组结果,例如:

Date = 8/21/2018
Result = true
ConversionCost = 1205 // whatever
Count = 201 // number of rows with this date, this result AND this ConversionCost

Date = 8/21/2018
Result = true
ConversionCost = 1206 // another conversion cost
Count = 10
通过ConversionCost对这些进行求和只会将此组转换为:

Date = 8/21/2018
Result = true
Cost = 242205 // = 1205*201

Date = 8/21/2018
Result = true
Cost = 12060 // = 1206*10

您是否尝试过删除ConversionCost上的分组并保留总和?@Rafalon它解决了问题!谢谢