web-dev-qa-db-ja.com

C#でLINQメソッドまたはクエリ式を使用して最後の5つのレコードを取得する方法

ホームページに最近追加した商品を掲載したい。私はコントローラーにChildActionを追加しましたが、最後の5つのレコードをフェッチするためにどのLinqクエリを実行すればよいか理解できません。

25
Pankaj Upadhyay

[〜#〜] linq [〜#〜]

var lastFiveProducts = (from p in products 
                        orderby p.ProductDate descending
                        select p).Take(5);

ラムダ

var lastFiveProducts = products.OrderByDescending(p => p.ProductDate).Take(5);

あなたがどちらを好むか。

55
James
.Skip(count - 5);

または

.Reverse().Take(5).Reverse()
35
Not loved

最も簡単な方法は、順序を逆にして(たとえば、_orderby foo descending_を使用)、次に Take() を使用することです。例えば:

_var recentProducts = products.OrderByDescending(x => x.CreationDate)
                             .Take(5);
_

またはクエリ式形式(上記の形式でより簡単に表現される単純なクエリには使用しません):

_var recentProducts = (from product in products
                      orderby product.CreationDate descending
                      select product).Take(5);
_
16
Jon Skeet

MoreLINQパッケージをインストールしてから:

CollectionName.TakeLast(5);
8
usefulBee

これは昇順で最後の5つを選択するためのものです

var query = from tbl in  (from tbl1 in object.Table orderby
tbl1.Column descending select tbl1).Take(5)  orderby tbl.Column
ascending  select tbl;
1
Jai

コード:

INT[]number = new int[] {3,6,8,2,3,7,0,2,5}

var result= (from r in number select r).reverse().take(5);

結果:5 2 0 7 3

0
user956094