問題タブ [expression-trees]

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 投票する
4 に答える
41111 参照

c# - C# で 'String.Contains("term")' を表す式ツリーを作成するにはどうすればよいですか?

私は式ツリーを使い始めたばかりなので、これが理にかなっていることを願っています。表現する式ツリーを作成しようとしています:

これまでのところ、私は持っています:

String.Contains() メソッドを参照する方法がわかりません。

助けていただければ幸いです。

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

c# - メソッドに渡してプロパティの名前を取得する

StackOverflow ユーザー jolson は、文字列を使用せずにメソッドを登録する方法を例示する非常に優れたコードを持っていましたが、式ツリーはこちら.

メソッドの代わりにプロパティに似たようなものを持つことは可能ですか? プロパティ (プロパティの名前ではない) を渡し、メソッド内でプロパティ名を取得するには?

このようなもの:

ありがとう。

0 投票する
8 に答える
91636 参照

c# - ジェネリック拡張メソッド内で文字列列名を使用してIQueryableにOrderByを適用するにはどうすればよいですか?

OrderByのタイプはsortExpressionから推測されないため、実行時に次のように指定する必要があります。

または

ただし、TSortColumnは実行時にのみ決定できるため、これは不可能だと思います。

これを回避する方法はありますか?

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

c# - メソッド呼び出しでコンパイル済みラムダを生成するにはどうすればよいですか?

特定のメンバーに対して実行時にコンパイル済みの getter メソッドを生成しています。今のところ、私のコードは getter メソッドの結果が文字列であると想定しています (テストではうまくいきました)。ただし、私が作成したカスタム コンバーター クラスでこれを機能させたいと考えています。以下を参照してください。追加した「ConverterBase」リファレンスを参照してください。

コンバーター クラスへの呼び出しを式ツリーに追加する方法がわかりません。

2 番目の TODO エリアに何を入れるかを探しています (最初の TODO エリアは処理できます:))。

結果のコンパイル済みラムダは、型 U のインスタンスをパラメーターとして取り、指定されたメンバー アクセス関数を呼び出してから、コンバーターの "FieldToString" メソッドを結果と共に呼び出し、結果の文字列を返す必要があります。

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

linq - ストアドプロシージャをLinq/Lambdaで記述します(ユニットテスト可能ですが、パフォーマンスの高いストアドプロシージャ)。可能?

レポートモデル(SQL Server Reporting Services)のデータソースを作成しています。レポートには、多くの結合と計算が必要です(たとえば、これに費やされた金額、つまり金額Aと金額Bなどの財務パラメーターの計算)...これにはすべてサブオブジェクトが含まれます。

このコードの単体テストを作成することは私にとって非常に理にかなっています(つまり、注文の収集をウォークスルーしたり、ビジネスルールやサブオブジェクトに基づいて情報を集約したりします)。このような

次に、戻り値をテストします。

ただし、このコードは、レポートビューで使用されるSQLではありません...もちろん...データベースに.NETアセンブリをプラグインできると思います。ここでの問題は、もちろん、パフォーマンスです...これらすべてのオブジェクトをC#でループさせたくありません...遅すぎます。

したがって、当然、Linq / Lambda/Expressionツリーが私への答えのようです。ご存知のように、Linq to SQLを実行すると、式ツリーが構築され、それらに基づいて適切なSQLが生成されます。

したがって、ラムダ式を使用してLinq to Objectsでコードを記述し、サンプルコレクション(式を.netにコンパイルしたもの)でこのコードをユニットテストし、DBストアドプロシージャでLinqtoSQLと同じコードを再利用できます。 SQL Serverは、適切なSQLを生成します(Linq to SQLがすでに生成しているように)...

そうすれば、単体テストとC#でのドメインロジックコードの記述、およびレポート用の高性能なストアドプロシージャの両方のメリットを享受できます。

可能?SQL ServerCLRストアドプロシージャでLinq/Lambdaを使用できますか?誰かがそれをしたか、それを機能させる方法を知っていますか?私は夢中ですか?あなたはそれをするより良い方法を知っていますか?

ありがとう

PS私は今、これがどのように適切に行われるべきかを理解したと思います。ウディ・ダーハンによれば、私が彼を正しく理解していれば。データベースを非正規化し、計算されたすべてのフィールドをテーブル内のオブジェクトに配置する必要があります。サブオブジェクト(OrderLineが追加された)で何かが発生すると、Customerオブジェクトはイベントを受信し、スマート値を再計算する必要があります(キャッシュして永続化します)。

次に、レポートはロジックなしで簡単に進み、高速に動作します...

0 投票する
6 に答える
27379 参照

c# - C# 式ツリーでフィールド値を設定するにはどうすればよいですか?

与えられた:

「ターゲット」パラメーターのフィールドを「値」に設定するラムダ式をコンパイルするにはどうすればよいですか?

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

c# - IEnumerableを呼び出す式ツリーを作成するにはどうすればよいですか。どれでも(...)?

次の式を表す式ツリーを作成しようとしています。

わかりやすくするために短縮しました。次のとおりです。

私は何が間違っているのですか?誰か提案がありますか?

0 投票する
4 に答える
1078 参照

c# - .NET の式ツリー - ライブラリ?

私は最近、式ツリーを使用して動的クエリ ツールを作成しました。作業を進めるうちに、式ツリーの威力に気づき始めました。私のクエリ ツールは、レポート ツール、動的意思決定エンジン、および抽象的な方法で動的オブジェクトを操作する必要があるその他のケースの基礎を形成することもできます。

このプロセスは面倒でした (リフレクションによるジェネリック メソッドへの再帰呼び出し - うーん) ので、式ツリーの力を利用してこれらの種類のタスクのいくつかを達成するジェネリック ライブラリを誰かが作成したかどうか疑問に思っています。PredicateBuilderを見たことがありますが、他に知っている人はいますか?

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

c# - C#でXmlを解析して式ツリーを作成するにはどうすればよいですか?

C#を使用してxmlを解析することにより、式ツリーを作成しようとしています。xmlは次のようになります。

または別の例...

...どこから始めればよいかについてのポインタが役立ちます。

敬具、

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

c# - Expression Treesでインスタンスメソッドを呼び出す最良の方法は?

式ツリー内でインスタンス メソッドを呼び出す最良の方法は何ですか? 私の現在の解決策は、インターフェイス IColumn のインターフェイス メソッド「オブジェクト GetRowValue(rowIndex)」に対してこのようなものです。

もっと速い方法はありますか?メソッド名を文字列として渡さずに Expression を作成することは可能ですか (リファクタリングには適していません)?