我的方法中有这个:
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条记录)? 在此先感谢您的帮助。
答案 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
这将允许您轻松地将SQL QUERIES转换为LINQ .....非常有用的工具