我继承了具有以下 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 的组合构成了交易块的“版本”概念。上面的数据描述了具有以下促销 ID 的两个版本:
Version 1 (Created 2/23/2013): p100, p101, p102, p103
Version 2 (Created 3/23/2013): p100, p101, p102
因此,当更新此交易块时,p103
删除了带有 PromoID 的交易。
我有一个屏幕,我只想显示一组交易的最新版本。我想出了以下内容,我认为这是有效的,但实际上有一个错误:
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 的交易的最长日期,因此它正在显示。
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
在这个结果集中。如何更新我的查询,以便仅显示 Customer、LineOfBusiness 和 DealYear 的唯一组合的最新 VersionDate 记录?
更新
如果它不会把水弄得太多,我会在 SQL 中按 Customer#、LineOfBusiness 和 DealYear 分组,确定该组的最大 VersionDate,然后将该日期用于我的过滤器。我不确定如何在这里做同样的事情。