我目前正在研究一个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(这是某个游览的费用) )
这部分是我遇到的最大问题。 我希望你们中的一些人可以给我一些建议