Linq总和在一定条件下

时间:2015-06-06 10:31:53

标签: c# asp.net-mvc linq join group-by

我目前正在研究一个mvc项目,并尝试制作一些linq语句,以便为物流企业计算一些成本。

           IEnumerable<Tagestourauswertung> query =
           from ls in db.Lieferscheine join l in db.Lieferadressen on ls.Lieferadresse.LieferadresseID
           equals l.LieferadresseID join tb in db.TagestourBestehtAusLieferadresse on l.LieferadresseID equals tb.LieferadresseID
           join t in db.Tagestouren on tb.TagestourID equals t.TagestourID
           join f in db.Fahrer on t.Fahrer.FahrerID equals f.FahrerID
           where ls.Lieferdatum.Year == tb.Uhrzeit.Year && ls.Lieferdatum.Month == tb.Uhrzeit.Month && ls.Lieferdatum.Day == tb.Uhrzeit.Day

           group new { ls, l, tb, t, f } by new { t.TagestourID, t.Name, t.VorlageStandardtour.StandardtourID } into deb

               select new Tagestourauswertung()
           {
               TagestourID = deb.Key.TagestourID,
               Tagestourname = deb.Key.Name,
               StandardtourID = deb.Key.StandardtourID,
               Deckungsbeitrag = deb.Sum(x => x.ls.Deckungsbeitrag) - deb.Sum(y => y.t.Kosten) - deb.Sum(z => z.t.Zeit * z.f.KostenProStunde),
               Rentabilität = deb.Sum(x => x.ls.Deckungsbeitrag) / (deb.Sum(y => y.t.Kosten) + deb.Sum(z => z.t.Zeit * z.f.KostenProStunde))
           };
        List<Tagestourauswertung> TagesAuswertung = new List<Tagestourauswertung>();
        TagesAuswertung.AddRange(query);
        return View(TagesAuswertung);

这是我的代码,我知道它的德语,你们中的一些人可能会有困难,但让我很快解释一下,我想要达到的目的: 我们在db.Lieferscheine中保存了一些地址,我们提供了这些地址。这些地址具有ID并且还保存了产量。 在Tagestour表格中,我们保存了每日游览的ID和费用。

表Lieferscheine的地址可以属于每日游。 因此,每日一次旅行可以包含许多地址。

我的问题是,如果我想计算我的胜利,那么当我想使用公式时:

 sum(yield) - costs of the tour

我遇到了问题,例如,在Lieferscheine表的3个地址属于一个游览的情况下,系统还将游览的成本乘以3,即使游览的全部成本是例如200 $它将产生600。

我如何设法解决它? 我只希望在Lieferscheine表中保存两个或更多地址时,总结一次旅行的费用,这些地址属于不同的每日旅行。 如果他们全部或部分属于一日游,那么只能通过本次旅行的费用减少,而不是乘以属于旅游的地址...

我的计算在选择

{Deckungsbeitrag = deb.Sum(x =&gt; x.ls.Deckungsbeitrag(这是Lieferscheine表中的产量)) - deb.Sum(y =&gt; ytKosten(这是某个游览的费用) )

这部分是我遇到的最大问题。 我希望你们中的一些人可以给我一些建议

0 个答案:

没有答案