给这个Linq查询:
GetData.Where(p => p.LastActionA >= startDate && p.LastActionA <= endDate)
我应该如何改变它,所以我可以匹配从2日期列的最高值?
即像GetData.Where(MAX(p.LastActionA, p.LastActionB) >= startDate
最接近的等效SQL我可以使用子查询,像这样的东西:
SELECT ID,
(SELECT MAX(v) FROM (VALUES (LastActionA), (LastActionB)) AS value(v)) as MaxDate
FROM Data
对于刚刚2日,你可以使用C#的条件运算符(在最新EF6和EF核心工程):
.Where(p => (p.LastActionA > p.LastActionB ? p.LastActionA : p.LastActionB) >= startDate)
2个多的日期下面的作品,但只有在EF6(产生更糟糕的SQL)。其实它在EF核心太多,但会导致客户的评价,这是不好的:
.Where(p => new [] { p.LastActionA, p.LastActionB }.Max() >= startDate)