使用Linq在一个查询中使用多于一组的语句

时间:2015-06-02 14:09:23

标签: c# linq

我想在一个查询中执行2个group 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保存为(来自Lieferschein表的Deckungsbeitrag的总和) - (表格Tagestour的公里数乘以表Fahrer的成本) )。 所以我首先需要2组状态我建立总和然后我想做一个选择Deckungsbeitrag作为(算术函数) 我可以这样做吗? 我很乐意得到一些帮助,因为我变得疯狂:D

3 个答案:

答案 0 :(得分:0)

最后,您在d1上的结果是IGrouping,因此您需要执行以下操作:

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

我还建议将示例翻译成英文

答案 1 :(得分:0)

好吧,这是一个后勤工具。 我们有tabel交货订单,其中保存了某个旅游的边际收益和几个地址,例如一个交货订单可以包含许多地址,这些地址都有id但可以属于某个旅游,例如地址1, 2,3属于tour1,地址4,5,6到游2等等。 我们有一个名为tour的表,其中保存了这些游览,还有巡演的费用,它的持续时间(时间)以及我们有一个表驱动程序,其中保存了驱动程序ID以及每小时他获得多少报酬。 现在我的目标是计算一次旅行的边际收益是否足以弥补可变成本。 我的公式是:边际收益 - 成本 - (时间*司机收入/小时) 然后,我想构建一个group by语句,其中总结了属于某个游览的所有结果。 最后我想要这样的东西:tour1 200000 $,tour2 150000 $等...... 我希望你们明白这一点:D

答案 2 :(得分:0)

这是我目前管理的内容:

  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组成。名字和微积分...

相关问题