1

linq式/クエリ演算子からwhere句を追加/削除できるかどうか疑問に思いました。

例:-

var qry = from e in emp where(e => e.salary > 5000) select e;

後の段階でwhere式を削除することは可能ですか?

前もって感謝します :)

4

5 に答える 5

3

はい、可能ですがExpressionVisitor、複合式を評価し、必要に応じて変更するクラスを実装する必要があります。比較的複雑なことをしていない限り、目的を達成するためのより良い方法がおそらくあるでしょう。

于 2011-03-03T03:44:44.117 に答える
0

私の知る限り、フィルタリングを調整できます

たとえば、条件に基づいて削除しようとしている場合 e.salary > 5000 、次のようなものを試す必要があります

var diffQry = from e in emp where(e => e.salary <= 5000) select e;
于 2011-03-03T03:41:25.120 に答える
0

WHERE条件付きクエリがある場合は句が必要だと思います。それ以外の場合(条件がない場合)は、次を使用できます。

var qry = from e in emp select e;
于 2011-03-03T03:44:10.033 に答える
0

プログラムで where 句を追加および削除する場合は、クエリ演算子を使用できます。

var query = emp.Select(x => x);

if (someCondition)
  query = query.Where(x => x.Price > 50);

質問をもう少し拡張する必要があります。

于 2011-03-03T03:46:17.580 に答える
0

たとえばqryIQueryable<T>LINQ-to-SQL または LINQ-to-Entities クエリの場合、基になる式ツリーを分析し、Where句を除いて新しい式ツリーを構築できるはずです。

qryが単純な場合(IEnumerable<T>たとえば、LINQ-to-Objects クエリ)、分析する式ツリーがないため、これは実行できません。

于 2011-03-03T03:46:50.313 に答える