今日、LINQ を使用しているときに、TakeWhile() が LINQ to エンティティでサポートされていないことを知りました。そのような機能を実装する効率的な方法はありますか? 私が持っているユースケースは以下の通りです -
私は従業員エンティティを持っていて、エンティティを名前でソートしました。今度は、この IQueryable からその時点までレコードを取得したいと思います (EmployeeID = 123)
このようなもの -
IQueryable<Employee> employees = ObjectContext.Employees
.OrderBy(a => a.Name)
.TakeWhile(a => a.EmployeeId != 123)
ただし、上記のコードでは、Linq to Entities で TakeWhile がサポートされていないため、エラーがスローされます。
私は以下のアプローチを試しています。誰かがより効率的で効率的なアプローチを持っているかどうか教えてください:
- 最初の X レコードを取得し、
- 必要な EmployeeId がその一部であるかどうかを確認し、
- そうでない場合は、次の X レコードのセットを取得します
- それらを前のセットと連結します
- EmployeeID がその一部であるかどうかを再度確認します。
- 一致する EmployeeId が X レコードのセットで見つかったときにループを中断します。