如何在C#linq / lambda查询中转换它
select *
from meetings
order by ISNULL(ActualStartDate, StartDate) desc
到目前为止,我尝试了这个但似乎不起作用:
meetings.OrderByDescending(m => m.ActualStartDate ?? m.StartDate);
更新:
实际上这是正确的。问题出在listview上,显示该项目。道歉。
实际上我真正的问题是当ActualStartDate和StartDate都为null并且我希望它最后显示。但那是我猜的一个单独的问题。
答案 0 :(得分:2)
我怀疑你想要:
var sorted = meetings.OrderByDescending(m => m.ActualStartDate ?? m.StartDate);
请注意,调用该方法不会更改meetings
- 您需要使用返回值,该返回值将是排序的结果序列。 (这与LINQ的工作方式一致。)
如果仍然不起作用,并且假设这是LINQ to SQL或类似的东西,你应该查看生成的SQL来计算出发生了什么...然后你可以尝试调整你的查询是否适当。
答案 1 :(得分:1)
其他答案是正确的,但你也可以这样使用。
var meetings = meetings.OrderByDescending(p => p.ActualStartDate.HasValue)
.ThenBy(p => p.StartDate)
答案 2 :(得分:1)
你错过了" m。"对于StartDate:
meetings.OrderByDescending(m => m.ActualStartDate ?? m.StartDate);