Я унаследовал приложение со следующей таблицей tblTradeSpends:
ID PromoID Customer LineOfBusiness DealYear VersionDate
1 p100 200 SCF 2013 2/23/2013
2 p101 200 SCF 2013 2/23/2013
3 p102 200 SCF 2013 2/23/2013
4 p103 200 SCF 2013 2/23/2013
5 p100 200 SCF 2013 3/23/2013
6 p101 200 SCF 2013 3/23/2013
7 p102 200 SCF 2013 3/23/2013
Сочетание Customer, LineOfBusiness, DealYear и VersionDate составляет понятие «Версия» для блока сделок. Приведенные выше данные описывают две версии со следующими промо-идентификаторами:
Version 1 (Created 2/23/2013): p100, p101, p102, p103
Version 2 (Created 3/23/2013): p100, p101, p102
Итак, при обновлении этого блока сделок сделка с PromoID p103
была удалена.
У меня есть экран, на котором я хочу отображать только последнюю версию для блока сделок. Я придумал следующее, которое, как я думал, работает, но на самом деле в нем есть ошибка:
var records = from t in query
let maxversion =
(from v in _context.tblTradeSpends
where v.PromoID == t.PromoID
select v.VersionDate).Max()
where t.PlanType == "Planner" &&
t.VersionDate == maxversion
select t
Теперь сделка p103
была удалена продавцом в последней версии, но, поскольку она имеет максимальную дату для любой сделки с ее промо-идентификатором, она отображается.
ID PromoID Customer LineOfBusiness DealYear VersionDate
4 p103 200 SCF 2013 2/23/2013
5 p100 200 SCF 2013 3/23/2013
6 p101 200 SCF 2013 3/23/2013
7 p102 200 SCF 2013 3/23/2013
Я не хочу p103
в этом наборе результатов. Как я могу обновить свой запрос, чтобы отображались только записи с последней версией VersionDate для уникальной комбинации Customer, LineOfBusiness и DealYear?
ОБНОВЛЕНИЕ
Если это не сильно мутит воду, в SQL я бы сгруппировал по Customer #, LineOfBusiness и DealYear, определил максимальную VersionDate для группы, а затем использовал эту дату для своего фильтра. Я не уверен, как сделать то же самое здесь.
VersionDate
уникальная комбинация записей с Customer# = 200, LineOfBusiness = SCF и DealYear = 2013. - person Mister Epic   schedule 19.08.2013p103
. - person Artless   schedule 19.08.2013Customer
,LineOfBusiness
иDealYear
. А потом вы хотите, чтобы все записи в этой группе были с максимальной датой? Я обновил свой ответ, может быть, на этот раз я правильно понял. - person Artless   schedule 19.08.2013