2012-05-24 39 views
4

我在我的方法有这样的:我想取最后4记录,但总是第一个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条记录)? 在此先感谢您的帮助。

+0

我认为你应该接受@MarcinJuraszek的答案,因为他是第一个给出答案的人....... –

+0

我注意到他是第一个,但我不明白他说了什么,读完devdigital的回答后,我明白他的意思。这就是为什么我接受devdigital的答案而不是Marcin Juraszek。可能是因为在一行中给出的例子。 – Tanu

回答

10

移动你拿LINQER

enter image description here

th是将允许你转换你的SQL QUERIES TO LINQ很容易.....非常有帮助的工具

+0

啊,那很容易?我从来没有想过会影响SQL中的结果的位置。非常感谢。 – Tanu

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

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

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

刚刚得到应用,你在哪里和排序依据子句和比申请取功能,将做的工作对你

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

以备将来使用:

+0

感谢LINQER,我会用它。 – Tanu

+0

@Tanu - 欢迎................... –

相关问题