【发布时间】:2016-04-06 12:17:24
【问题描述】:
我有这个 Linq 查询,当我运行这些查询时,我得到了结果,我在下面的 img 中显示了
var SalesinvDets = (from si in CustomerTransactions
where si.TransTypeID == 10
group new {si} by new{
month=si.Period==1?"Jan-2015":si.Period==2?"Feb-2015":si.Period==3?"Mar-2015":si.Period==4?"Apr-2015":si.Period==5?"May-2015":
si.Period==6?"Jun-2015":si.Period==7?"Jul-2015":si.Period==8?"Aug-2015":si.Period==9?"Sep-2015":si.Period==10?"Oct-2015":
si.Period==11?"Nov-2015":si.Period==12?"Dec-2015":"",
month2=si.Period==13?"Jan-2016":si.Period==14?"Feb-2016":si.Period==15?"Mar-2016":si.Period==16?"Apr-2016":si.Period==17?"May-2016":
si.Period==18?"Jun-2016":si.Period==19?"Jul-2016":si.Period==20?"Aug-2016":si.Period==21?"Sep-2016":
si.Period==22?"Oct-2016":si.Period==23?"Nov-2016":si.Period==24?"Dec-2016":"",
period=si.Period
} into g
select new
{
month=g.Key.month,
month2=g.Key.month2,
Amount = g.Sum(x=>x.si.OVAmount)//.Sum(x=>x.si.OVAmount-(x.si.OVDiscount+x.si.OVFreight))//(si.OVAmount - (si.OVDiscount + si.OVFreight))
}).Dump();
我在运行查询期间得到了这个结果,但我不需要那样
我需要这样的结果,请帮助完成我的任务
【问题讨论】:
-
groupby 没有按照您想要的方式工作。我将使用 CompareTo() 方法向 IComparable 类添加一个继承。 Linq Groupby 将使用 CompareTo 方法进行分组。您有一个复杂的 GroupBy,并且将其编码为函数要容易得多。您还可以创建一个辅助函数来执行 Grouping,它等效于 CompareTo() 方法,该方法将返回一个整数 (-1 ,0,1)。
标签: c# entity-framework linq linq-to-sql linq-to-entities