問題タブ [predicatebuilder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4631 参照

c# - Linq In Clause&Predicatebuilding

2つのテーブルがあります。ReportReportData。ReportDataには制約ReportIDがあります。

ReportDataの述語条件が満たされているすべてのReportオブジェクトを返すようにlinqクエリを作成するにはどうすればよいですか?SQLでは次のようになります。

これが私の述語を構築する方法です:

これは、現時点での私のクエリ構築です。

次のことも試してみました。publicoverrideIQueryableGetReports(Expression> predicate、LLReportsDataContext reportDC){if(reportDC == null)throw new ArgumentNullException( "reportDC");

ただし、次の例外が発生します:「クエリ演算子「Where」に使用されるサポートされていないオーバーロード」。

更新 これはそれを修正しました:

0 投票する
2 に答える
13371 参照

c# - C# PredicateBuilder エンティティ: パラメーター 'f' は、指定された LINQ to Entities クエリ式にバインドされていませんでした

動的フィルターを作成する必要があり、エンティティを引き続き使用したいと考えていました。このため、albahari の PredicateBuilder を使用したいと思いました。

次のコードを作成しました。

コードを実行すると、日付フィルターではないフィルターが 1 つしかありませんでした。したがって、内側の述語のみが満たされました。述語が実行されると、次のエラーが発生しました。

パラメーター 'f' は、指定された LINQ to Entities クエリ式でバインドされていませんでした。

答えを探しているときに、次のページを見つけました。しかし、これはすでに LINQKit に実装されています。

他の誰かがこのエラーを経験し、それを解決する方法を知っていますか?

0 投票する
1 に答える
463 参照

linq - プログラムで LINQ クエリを、linq 式を正しく説明する読みやすい英語のテキストに変換するにはどうすればよいですか?

私は、アルバハリの PredicateBuilder ライブラリ http://www.albahari.com/nutshell/を使用して、実行時に動的に linq 式を作成するプロジェクトに取り組んでいます。この動的に作成された Expression<Func<T, bool>> 型の linq 述語を、実行時に読みやすい英語のステートメントに変換する方法を見つけたいと思います。

例として、静的に作成された linq ステートメントを示します。

from p in Purchases
select p
where p.Price > 100 && p.Description != "Bike".

この linq ステートメントでは、実行時に次の行に沿って英語の説明を動的に生成したいと考えています。

「価格が 100 を超え、説明が自転車ではない商品を探しています」.

この目標を達成するために既に存在するライブラリはありますか? PredicateBuilder を使用して where 述語を動的に生成していることを覚えておいてください。解決策が存在しない場合、どのように解決策を構築しますか?

ありがとう!

0 投票する
1 に答える
10506 参照

c# - 条件付きAND、OR、およびNOTフィルターを使用するLinq PredicateBuilder

LINQ to SQLを使用するプロジェクトがあります。このプロジェクトでは、クライアントがandまたはanまたは検索を実行するかどうかを選択できるように、いくつかの検索ページを書き直す必要があります。

PredicateBuilderを使用してLINQクエリをやり直すことについては考えましたが、これはかなりうまく機能していると思います。私は事実上、述語を含むクラスを持っています。例:

検索を実行するために私はこれを行っています(簡潔にするためにいくつかのコードは省略されています):

私はこれにかなり満足していますが、2つの懸念があります。

  1. SearchTypeプロパティを評価するif/elseブロックは、潜在的なコードの臭いである可能性があるように感じます。
  2. クライアントは現在、'/'または'ではない'検索を実行できることを主張しています。

ポイント2に対処するために、私は自分の表現を書き直すだけでこれを行うことができると思います。

ただし、これはちょっとした悩みの種のように感じます。これは通常、より良い解決策があることを意味します。誰かがこれをどのように改善できるかをお勧めできますか?私は動的LINQを知っていますが、LINQの強い型付けを失いたくありません。

0 投票する
2 に答える
789 参照

c# - LINQ述語で使用されるコレクションの範囲

私はPredicateBuilderが本当に好きです。これにより、あらゆる種類のクエリを非常に動的に構築できます。述語変数はさまざまなオブジェクトに渡すことができ、それらは知っている値などを追加できます。ハッシュされたコレクションに.Containsを使用する必要がある場合を除きます。Bzzt!クラッシュして燃えます。

たとえば(例/擬似コード、これはコンパイル/実行される場合とされない場合があります):

これを実行しようとすると、NotSupportedExceptionが発生します。メソッド'Boolean contains(Int32)'は、selectedIDs HashSetがスコープ内にないため、SQLへの変換がサポートされていません。これをすべて同じ方法で行うと、正常に機能します。

HashSetが宣言されている場所とは異なるスコープで使用できるように、述語を解決またはコンパイルするための正しい方法を知る必要があります。何か助けはありますか?

更新:私はこれをかなり間違っていました。以下のコードは正常に機能するため、スコープの競合はありません。ジェイありがとう。

0 投票する
3 に答える
4162 参照

silverlight - 式ツリーから述語メソッドを動的に構築するにはどうすればよいですか?

シナリオは次のとおりです。Silverlight 4.0、DataGrid、PagedCollectionView アイテムソース。目的は、フィルターを PCV に適用することです。フィルターは - である必要がありますPredicate<object>(Method)。ここで、メソッドはオブジェクトに対していくつかのロジックを実装し、含めるために true/false を返します。私が持っているのは、オプションでフィルター ロジックに 3 つの異なる基準を含める必要があり、明示的なコードはすぐに見苦しくなります。私たちはそれを望んでいませんよね?

したがって、PredicateBuilder を使用して式ツリーを構築し、それを Linq.Where に渡す方法があることがわかりました。

[ちなみに、これは私がやろうとしていることではありません]

3 つのオプションの基準を使用して、次のようなものを書きたいと思います。

もちろん、PredicateBuilder はExpression<Func<T, bool>>実際の述語メソッドではないものを作成するため、これはコンパイルされません。しかし、式ツリーをメソッドに変換する方法があることがわかったので、ネストされた if/then/else ステートメントの束に頼ることなく、目的を達成する方法があるはずだと私には思えました。

問題は、述語メソッドを動的に構築する方法はありますか?

ティア

0 投票する
2 に答える
476 参照

c# - PredicateBuilder メソッドの説明

PredicateBuilderのソースを調べたところ、その実装に興味をそそられました。Or メソッドの実装を見てみましょう。

述語本体に OrElse を使用するだけでなく、新しいラムダを呼び出すのはなぜですか?

0 投票する
2 に答える
2477 参照

c# - LINQ to SQL - PredicateBuilder

PredicateBuilder をさらに活用する方法についての簡単な質問です。以下のように動作します。

問題は、任意のメンバーでも検索したい場合、つまり、関数 string[] をキーワードとして渡すだけでなく、fieldToSearch などの検索するフィールドも渡し、p=> p.Description を置き換える場合です。含む (一時)); fieldToSearch による検索を可能にする何かで?

これは可能ですか、それは悪い考えですか?

0 投票する
2 に答える
408 参照

c# - SubSonic 3、実行時に動的または式を作成します

ユーザーの選択に基づいてlinqクエリを動的に構築する必要がある状況があります。SQLを動的に生成する必要がある場合は、次のように実行できます。

次に、同じ方法でlinqクエリを作成する必要があります。

これは亜音速でうまく機能します

PredicateBuilder http://www.albahari.com/nutshell/predicatebuilder.aspxで試しましたが、亜音速で例外がスローされます。

スローされる例外:NotSupportedException: The member 'productType1' is not supported at SubSonic.DataProviders.MySQL.MySqlFormatter.VisitMemberAccess

誰もがこのクエリを機能させる方法を知っています:

0 投票する
3 に答える
2859 参照

c# - C# 述語ビルダーが機能しない

次のコードで述語ビルダーを使用しようとしています:

問題は、次の行にあります。

p.IdIntelliSense は実行されず、次のコンパイル エラーがスローされます。

PredicateBuilder とは