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

Tan*_*anu 4 linq asp.net-mvc

我的方法中有这个:

var qry = db.Forms.Take(4)
                  .Where(m => m.SateliteID == Id)
                  .OrderByDescending(m => m.Tanggal)
                  .ToArray();
Run Code Online (Sandbox Code Playgroud)

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

SELECT TOP 4 <fields> FROM Forms WHERE sateliteID = Id
ORDER BY tanggal DESC
Run Code Online (Sandbox Code Playgroud)

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

dev*_*tal 10

移动你的Take:

var qry = db.Forms.Where(m => m.SateliteID == Id)
                 .OrderByDescending(m => m.Tanggal)
                 .Take(4)
                 .ToArray();
Run Code Online (Sandbox Code Playgroud)


Mar*_*zek 8

var qry = db.Forms.Where(m => m.SateliteID == Id).OrderByDescending(m => m.Tanggal).Take(4).ToArray();
Run Code Online (Sandbox Code Playgroud)

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