すぐに使えるLinqメソッドに関しては、短い答えは「いいえ」です。理由は次のとおりです。
IQueryable<T>
OP がと ではなくを扱っていることは理解してIEnumerable<T>
いますが、前者で使用できる機能は後者に基づいています。
IEnumerable<T>
Linq (または Linq to Objects) は、コレクションが反復されるまでさまざまな linq メソッドの実行を延期することによって機能します。反復が開始された場合でも、コレクション内の次のアイテムを生成するために必要な作業のみを行います。
WHERE について話しているので、フィルタリング関数について話しているのです。あなたが持っているとしましょうBase.Where(ConditionA).Where(ConditionB).Where(ConditionC)
。実行時に、これは、条件を満たす最初の項目が見つかるまで基本コレクションを反復処理することによって処理され、ConditionA
その項目が次の関数に渡されます。アイテムが を満たす場合ConditionB
は に渡されConditionC
、アイテムが を満たさない場合はに次のアイテムConditionB
をConditionB
要求し、 は次のアイテムを取得ConditionA
するために、を満たす別のアイテムが見つかるまでConditionA
を反復し続けます。次に、新しいアイテムがそれを満たしているかどうかをテストします。Base
ConditionA
ConditionB
このタイプのワークフローに が存在しない理由.OrWhere()
は、前のステートメントがその結果をそのような関数に渡していることを認識している必要があり、基本的に遭遇するすべてのアイテムを渡す必要があるためです (たとえ条件が満たされていない) だけでなく、条件が満たされているかどうかに関係なく、長い経過をたどります。これにより、単純な操作が大幅に複雑になります。
お役に立てれば...