Сумма Linq при определенных условияхC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Сумма Linq при определенных условиях

Сообщение Anonymous »

В настоящее время я работаю над проектом MVC и пытаюсь сделать несколько операторов linq, чтобы рассчитать некоторые затраты для логистического предприятия.

Код: Выделить всё

IEnumerable 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))
};

var tagesAuswertung = new List(query);

return View(tagesAuswertung);
Это мой код, я знаю его по-немецки, и у некоторых из вас могут возникнуть трудности, но позвольте мне вкратце объяснить, чего я хочу достичь:
У нас есть в db. В Лифершайне сохранено несколько адресов, куда мы доставляем. У этих адресов есть идентификатор, а также сохраняется доход.
В таблице Tagesour мы сохраняем наши ежедневные туры с идентификатором, а также стоимость.
Адреса из Таблица Lieferscheine может принадлежать ежедневным турам.
Таким образом, один ежедневный тур может содержать множество адресов.
Моя проблема в том, что если я хочу подсчитать свой выигрыш, то когда я захочу используйте формулу:

Код: Выделить всё

 sum(yield) - costs of the tour
У меня проблема: например, в случае, если 3 адреса из таблицы Lieferscheine принадлежат одному туру, система также умножает стоимость тура на 3, хотя полная стоимость тура, например, 200$, из него получится 600.
Как мне это решить?
Я хочу, чтобы только стоимость тура суммировалась когда в таблице Lieferscheine сохранено два или более адресов, принадлежащих разным ежедневным турам.
В случае, если все они или некоторые из них принадлежат к одному ежедневному туру, это должно быть уменьшено только на стоимость этого тур, а не умноженный на количество адресов, принадлежащих туру...
Мой расчет находится под выбором
{ Deckungsbeitrag= deb. Sum(x=>x.ls.Deckungsbeitrag(это доходность из таблицы Lieferscheine)) - deb.Sum(y=>y.t.Kosten(это стоимость определенного тура)
С этой частью у меня самая большая проблема.
Надеюсь, кто-нибудь из вас сможет дать мне совет

Подробнее здесь: https://stackoverflow.com/questions/306 ... conditions
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»