0

Id という主キーを持つ何千ものレコードを含むテーブルがあります。

時間の経過とともにレコードが削除されたため、Id 構造は次のようになります。

ID 1,2,5,7,12,15,17,34,45,89,97 ~ 2567,2743,2981 など

c# と Entity Framework を使用して、特定の Id を見つけて取得する方法と、クエリを使用して前後の 10 レコードを取得する方法はありますか?

レコードのウィンドウをキャプチャしようとしていると思います。100 項目の完全なリストで、レコード 60 が必要だとしましょう。レコード 50 ~ 70 を取得するクエリはありますか?

4

1 に答える 1

1

通常、ID は自動であり、ギャップレスであることを意図していないため (そのようなことをしたい場合)、ID を気にする必要はありません。

それでも、次のクエリを使用してエントリを選択できます。

SELECT TOP 11 Id FROM Table WHERE ID >= 400 ORDER BY ID UNION
SELECT TOP 11 Id From Table WHERE ID <= 400 ORDER BY ID Desc

または、SQL の RANGE 関数を調べて、行を数値化し、その数値に基づいて選択することもできます。

Select-Union の EF バージョン:

idList.Where(id >= 400).OrderBy(id => id).Take(11).Union(
    idList.Where(id <= 400).OrderByDescending(id => id).Take(11));
于 2013-07-31T12:51:04.303 に答える