我在StackOverflow.com上阅读其他文章和评论,但无法理解解决方案。Linq Dynamic OrderBy
下面是代码:
var qry = (from m in db.Messages
join r in db.Recievers on m.Id equals r.Message_Id
let a = m.SendDate
let b = (m.DoneDate != null ? m.DoneDate : DateTime.MinValue)
let c = m.Comments.Max(c => c.CommentDate)
let d = (c != null ? c : DateTime.MinValue)
let e = (radDropDownList1.SelectedIndex == 0 ? a : a >= b ? a >= d ? a : d : b >= d ? b : d)
orderby e descending
select m).Distinct();
注:
radDropDownList1有两个项目。 0意味着orderby必须基于消息的SendDate,1意味着orderby必须基于SendDate,DoneDate和注释中的最大日期之间的最大值。上面的代码不会返回我期望的结果。请帮帮我。
我做了你说的,但得到的错误说:成员'System.DateTime.Ticks'没有支持转换到SQL。 – Mohsen
我已经通过添加详细信息编辑了答案 – meorfi
我刚才观察到,您应该在表达式中使用'd'而不是'c' let tempMax2 = tempMax1> c? tempMax1:c'。所以它会是'let tempMax2 = tempMax1> d? tempMax1:d' – meorfi