使用Linq在一个查询中使用多个group by语句

本文关键字:group 语句 by 一个 Linq 使用 查询 | 更新日期: 2023-09-27 17:52:33

我想在一个查询中做2组by和sum语句。我正在用Visual Studio MVC做一个项目。

这是我到目前为止所做的:

var query = from sn in db.Standardtouren
                    from stid in db.Tagestouren
                    from d in db.Lieferscheine
                    from k in db.Fahrer
                    from stlid in db.StandardtourBestehtAusLieferadresse
                    where stid.VorlageStandardtour.Equals(sn.StandardtourID)
                    where k.FahrerID.Equals(stid.Fahrer)
                    where d.Lieferadresse.Equals(stlid.LieferadresseID)
                    group d by new {d.Lieferadresse, d.Deckungsbeitrag}
into d1

我的目标是拥有一个包含Tourname, Costs和Deckungsbeitrag行的表,而Deckungsbeitrag保存为(来自lifeferschein表的Deckungsbeitrag的总和)-(从表Tagestour到表Fahrer的成本的公公里之和)。首先,我需要两个group by语句来构建求和然后,我要创建一个select deckungshebeitrag作为(算术函数)我怎么能这么做?我很乐意得到一些帮助,因为我快要疯了:D

使用Linq在一个查询中使用多个group by语句

最后你在d1上得到的结果是一个igrouing所以你需要做这样的事情:

select new{ X1 = d1.Key.Lieferadresse.Sum(), X2 = d1.Key.Deckungsbeitrag.Sum() } 

我还建议把这个例子翻译成英文

好的,它是一个物流工具。我们有一个标签交付订单,其中保存了某个旅行的边际收益和几个地址,例如一个交付订单可以包含许多地址,这些地址都有一个id,但可以属于某个旅行,例如地址1,2,3属于tour1,地址4,5,6属于tour2,等等。我们有一种叫tour的桌游,可以节省行程,也可以节省旅行的费用,旅行的时间,我们有一名桌游司机,可以节省司机的身份证,以及他每小时的工资。现在我的目标是计算,旅游的边际回报是否足以补偿可变成本。我的公式是:边际收益-成本-(时间*司机每小时的收入)然后,我想建立一个声明组,其中所有属于某个旅行的结果被总结。最后我想要这样的东西:tour1 200000美元,tour2 150000美元等等……D

这是我到目前为止所做的:

  var query = from sn in db.Tours
                    from d in db.deliveryorder
                    from l in db.adresses
                    from k in db.driver
                    from stlid in db.tourContainsAdresses

                    where k.driversID.Equals(stlid.driver)
                    where d.adresses.Equals(l.adresses)
                    select new {
                       sn.Name,
                       calculus= d.mgreturn-sn.costs-(sn.time*k.driverscost)

这就是我现在的问题所在,我想建立一个按sn分组的微积分和。