linq式/クエリ演算子からwhere句を追加/削除できるかどうか疑問に思いました。
例:-
var qry = from e in emp where(e => e.salary > 5000) select e;
後の段階でwhere式を削除することは可能ですか?
前もって感謝します :)
linq式/クエリ演算子からwhere句を追加/削除できるかどうか疑問に思いました。
例:-
var qry = from e in emp where(e => e.salary > 5000) select e;
後の段階でwhere式を削除することは可能ですか?
前もって感謝します :)
はい、可能ですがExpressionVisitor
、複合式を評価し、必要に応じて変更するクラスを実装する必要があります。比較的複雑なことをしていない限り、目的を達成するためのより良い方法がおそらくあるでしょう。
私の知る限り、フィルタリングを調整できます
たとえば、条件に基づいて削除しようとしている場合 e.salary > 5000 、次のようなものを試す必要があります
var diffQry = from e in emp where(e => e.salary <= 5000) select e;
WHERE
条件付きクエリがある場合は句が必要だと思います。それ以外の場合(条件がない場合)は、次を使用できます。
var qry = from e in emp select e;
プログラムで where 句を追加および削除する場合は、クエリ演算子を使用できます。
var query = emp.Select(x => x);
if (someCondition)
query = query.Where(x => x.Price > 50);
質問をもう少し拡張する必要があります。
たとえばqry
、IQueryable<T>
LINQ-to-SQL または LINQ-to-Entities クエリの場合、基になる式ツリーを分析し、Where
句を除いて新しい式ツリーを構築できるはずです。
qry
が単純な場合(IEnumerable<T>
たとえば、LINQ-to-Objects クエリ)、分析する式ツリーがないため、これは実行できません。