4

我的方法中有这个:

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 条记录)?在此先感谢您的帮助。

4

3 回答 3

10

移动你的镜头:

var qry = db.Forms.Where(m => m.SateliteID == Id)
                 .OrderByDescending(m => m.Tanggal)
                 .Take(4)
                 .ToArray();
于 2012-05-24T10:35:51.707 回答
8
var qry = db.Forms.Where(m => m.SateliteID == Id).OrderByDescending(m => m.Tanggal).Take(4).ToArray();

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

于 2012-05-24T10:35:20.397 回答
1

只需先应用您 where 和 orderby 子句,然后应用将为您完成工作的函数

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

供将来使用:LINQER

在此处输入图像描述

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

于 2012-05-24T10:37:11.370 回答