2

数値である特定の ID が見つかるまで行を選択したいと思います。データが Id 順に並べられている場合、問題は非常に簡単に解決できます。

Id    Name
-----------
1     Bob
2     Eve
3     Alice
4     Michael
5     Anne
6     Mike

ID 4 が見つかるまですべてのアイテムを取得するには、次の SQL ステートメントで十分です。

SELECT * FROM Users WHERE Id <= 4

データが名前順に並べられていて、ID 4 が見つかるまで項目を取得したい場合、適切な解決策を思いつきませんでした。

Id    Name
-----------
3     Alice
5     Anne
1     Bob
2     Eve
4     Michael
6     Mike

定義するステートメントの出力は次のようになります。

Id    Name
-----------
3     Alice
5     Anne
1     Bob
2     Eve
4     Michael

編集1:

次のステートメントでは、出力はほぼ必要なものですが、ID 4 のアイテムがありません。

queryable.OrderBy(o => o.Name).TakeWhile(o => o.Id != 4);

Id    Name
-----------
3     Alice
5     Anne
1     Bob
2     Eve

ID4の商品も同梱可能でしょうか?

編集2:

今のところ、私はこのアプローチを採用しています:

queryable.OrderBy(o => o.Name).TakeWhile(o => o.Id != 4).Union(queryable.Where(o => o.Id == 4))

Id は一意であるため、UNION ステートメントに問題はありません。しかし、この声明が最も効果的なものであるかどうかはわかりません。

4

3 に答える 3