我想拿最后4个记录,但总是得到前4个

时间:2012-05-24 10:33:09

标签: asp.net-mvc linq

我的方法中有这个:

var qry = db.Forms.Take(4)
                  .Where(m => m.SateliteID == Id)
                  .OrderByDescending(m => m.Tanggal)
                  .ToArray();

我想要的是从所有可用记录中获取最后4条记录,但是 我得到的是前4个记录。 我做错了什么? 我以为这个命令与此相同:

SELECT TOP 4 <fields> FROM Forms WHERE sateliteID = Id
ORDER BY tanggal DESC

但似乎他们是不同的。 我该怎么做才能得到我想要的东西(最后4条记录而不是前4条记录)? 在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:10)

移动你的拍摄:

var qry = db.Forms.Where(m => m.SateliteID == Id)
                 .OrderByDescending(m => m.Tanggal)
                 .Take(4)
                 .ToArray();

答案 1 :(得分:8)

var qry = db.Forms.Where(m => m.SateliteID == Id).OrderByDescending(m => m.Tanggal).Take(4).ToArray();

您应该订购,而不是从有序列表中获取一些结果。方法应该以这种顺序调用。

答案 2 :(得分:1)

首先应用你在哪里和orderby子句,然后应用将为你工作的take函数

var qry = db.Forms
                      .Where(m => m.SateliteID == Id) 
                     .OrderByDescending(m => m.Tanggal) 
                     .Take(4)
                     .ToArray(); 

以备将来使用:LINQER

enter image description here

这将允许您轻松地将SQL QUERIES转换为LINQ .....非常有用的工具