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 句を適用してから、作業を行う take 関数を適用します。

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 に答える