我继承了一个我需要更新的应用程序,我无法更改数据库的表结构。
ID | PromoID | VersionDate | Type
1 P0001 01/03/2013 Live
2 P0002 02/03/2013 Live
3 P0001 02/04/2012 Draft
4 P0003 01/03/2013 Live
5 P0003 01/02/2013 Live
所以,最初的开发者有这个版本记录的原始概念。我需要做的是创建一个 linq 查询,该查询返回所有“实时”版本的最新版本,但我还需要确保如果其任何版本的类型为“草稿”,则不返回任何记录
我有这个:
var records = from r in _context.Promotions
let maxversion =
(from v in _context.Promotions
where v.PromoID == t.PromoID
select v.VersionDate).Max()
where r.Type == "Live"
&& r.VersionDate == maxversion
select r
但我不知道如何过滤掉所有具有相同 PromoID 的记录,其中一个记录的类型为“草稿”。根据我提供的数据,我需要删除记录 #1 和 #3,因为它们共享相同的 PromoId 并且 #3 具有草稿类型。