У меня есть таблица, которая имеет около 15 различных полей, некоторые из которых являются JobId (целое поле), стоимость (целое поле) и LastUpdated (поле DateTime)Объединение двух запросов LINQ в одну
JobID Cost LastUpdated 1 10 10-July-2011 1 15 11-June-2011 2 25 5-May-2011 1 15 12-April-2011
Is возможно ли написать один запрос LINQ, чтобы получить сумму Cost for job id = 1, а также последнюю дату такой стоимости?
Пример вывода запроса для выборки данных выше, чтобы выглядеть следующим образом:
40 , 10-july-2011
В настоящее время я делаю это с двумя разными запросами Linq, как это, в результате двух обращений к базе данных из сайт в данном конкретном случае.
//for last updated
(from row in MyTable where row.JobID == 1
orderby row.LastUpdated descending
select row.LastUpdated).First()
//for sum of cost
(from row in MyTable
where row.JobID == 1
select row.Cost).Sum()
Будет ли один запрос linq лучше в таком случае? Подобные случаи, подобные этому во время загрузки страницы, приведут к нескольким ударам в базе данных, всего около 18, к 9 различным таблицам. При объединении суммы и даты LastUpdated в одном запросе я пытаюсь уменьшить количество попаданий до 9, по одному для каждой таблицы.
Спасибо за ваше время ...
Я пробовал это в linqpad .. и получил ошибку: никакой перегрузки для метода «OrderByDescending» не принимает 0 аргументов. – user20358
Однако эта строка, которую я изменила, сделала трюк. LastUpdated = rows.OrderByDescending (x => x.LastUpdated) .First(). LastUpdated – user20358
@ user20358 - извините, я обновил до * .OrderByDescending (x => x) *, который должен работать для вас сейчас. Ваша линия тоже хороша. – Aducci