当count为零时,linq跳过计数

时间:2011-03-17 03:39:12

标签: c# linq

我正在进行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。

有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试.Reverse().FirstOrDefault(),或者如果您有日期列或主键列,请尝试.OrderByDescending(...).FirstOrDefault()

使用您的变量名称和评论:

var TheUserNote
    = MyDC
    .UserNotes
    .Where(x => x.UserId == TheUserID)
    .OrderByDescending(x => x.NoteDateTime)
    .FirstOrDefault()
;

答案 1 :(得分:0)

是否有他们要回来的特定订单?我假设如此,如果它是你得到的最后一个或第一个,为什么会这么重要?

难道你不能用相反的方向订购并使用FirstOrDefault?