我正在进行linq-to-sql查询,我希望LastOrDefault运算符可用,但事实并非如此。所以,我正在写这样的查询:
TheUserNote = ((from note in MyDC.UserNotes
where note.UserID == TheUserID
select note.NoteText).Skip(
(from n in MyDC.UserNotes
where n.UserID == TheUserID
select n.NoteID).Count() - 1)).SingleOrDefault(),
基本上,我想使用Skip和Count来到最后一项:计算有多少项,减去1,然后跳过该数字。 它没有用,我正在寻找它。问题是有时Count可能为0所以我得到一个错误,说参数无效,因为在这种情况下Count将为-1。
有什么建议吗?
感谢。
答案 0 :(得分:1)
您可以尝试.Reverse().FirstOrDefault()
,或者如果您有日期列或主键列,请尝试.OrderByDescending(...).FirstOrDefault()
。
使用您的变量名称和评论:
var TheUserNote
= MyDC
.UserNotes
.Where(x => x.UserId == TheUserID)
.OrderByDescending(x => x.NoteDateTime)
.FirstOrDefault()
;
答案 1 :(得分:0)
是否有他们要回来的特定订单?我假设如此,如果它是你得到的最后一个或第一个,为什么会这么重要?
难道你不能用相反的方向订购并使用FirstOrDefault?