如何在C#中使用LINQ方法或查询表达式检索最后5条记录

Pan*_*yay 21 c# linq entity-framework-4.1

在我的主页上,我想展示最近添加的产品.我已经向我的控制器添加了一个ChildAction,但是我无法理解我应该运行哪些Linq查询来获取最后五个记录.

Jam*_*mes 50

LINQ

var lastFiveProducts = (from p in products 
                        orderby p.ProductDate descending
                        select p).Take(5);
Run Code Online (Sandbox Code Playgroud)

LAMBDA

var lastFiveProducts = products.OrderByDescending(p => p.ProductDate).Take(5);
Run Code Online (Sandbox Code Playgroud)

你喜欢哪个.


Jon*_*eet 16

最简单的方法是颠倒您的订购(例如使用orderby foo descending),然后使用Take().例如:

var recentProducts = products.OrderByDescending(x => x.CreationDate)
                             .Take(5);
Run Code Online (Sandbox Code Playgroud)

或者在查询表达式表单中(我不会用于在上面的表单中更容易表达的简单查询):

var recentProducts = (from product in products
                      orderby product.CreationDate descending
                      select product).Take(5);
Run Code Online (Sandbox Code Playgroud)


use*_*Bee 8

安装MoreLINQ Package,然后:

CollectionName.TakeLast(5);
Run Code Online (Sandbox Code Playgroud)