从2列的最后日期LINQ比赛

问题描述 投票:1回答:1

给这个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
entity-framework linq-to-entities max
1个回答
1
投票

对于刚刚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)
© www.soinside.com 2019 - 2024. All rights reserved.