問題タブ [linq-expressions]
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.
.net - Linq 式を動的に作成する方法は?
Linq 式を動的に作成する方法を見つけようとしています。私が理解しているように、これらの式は .NET に導入された新しいメタプログラミング機能の 1 つです。これらの式を動的に作成するには、文字列値から実行できると考えていますが、実行できるという言及もあります。これは実行時に。VB.NET または C# の例は素晴らしいでしょう。
linq - MemberExpression から MemberExpression[]
目的は、2 つの LambdaExpressions から MemberExpressions の配列を取得することです。1 つ目は、オブジェクトのインスタンスを返す MethodCallExpression に変換できます ( Expression<Func<T>>
)。2 番目の Lambda 式は、コンパイルされた最初の式の結果を取得し、ネストされたメンバー ( Expression<Func<T,TMember>>
) を返します。2 番目の Lambda 式は、ネストされたプロパティの呼び出しのみを行うと想定できますが、これらの呼び出しのいくつかを行う可能性があります。
したがって、作成しようとしているメソッドのシグネチャは次のとおりです。
MemberExpression[] GetMemberExpressionArray<T,TValue>(Expression<Func<T>> instanceExpression, Expression<Func<T,TValue>> nestedMemberExpression)
wherenestedMemberExpression
は次の形式の引数を取ると想定されます
parent => parent.ChildProperty.GrandChildProperty
parent
結果の配列は、 toおよびtoChildProperty
の値からの MemberAccess を表します。 ChildProperty
GrandChildProperty
MemberExpression
次の拡張メソッドを使用して、すでに最後のものを返しました。
さて、これを達成するにはいくつかの方法があることを私は知っています。私にとって最も直感的な方法は、.Expression
プロパティをループして最初の式を取得し、途中で各 MemberExpression への参照をキャプチャすることです。これが最善の方法かもしれませんが、そうではないかもしれません。このような式を使用することで得られるパフォーマンス コストについて、私はあまりよく知りません。MemberExpression には MemberInfo があり、リフレクションがパフォーマンスを低下させるはずであることを知っています。
式に関する情報を検索しようとしましたが、見つけたリソースは非常に限られています。
最適なパフォーマンスと信頼性でこのタスク (およびこのタイプのタスク全般) を達成する方法についてアドバイスをいただければ幸いです。
linq - ラムダを Where ステートメントに渡す
今日、これを行うと次のことに気付きました。
items var にアクセスすると、データ呼び出しとして最初の行のみが実行され、メモリ内で 2 番目の呼び出しが実行されます。ただし、これを行うと:
両方の where ステートメントを含むコンテキストに対して実行される式は 1 つだけです。linq ラムダの式を作成するために使用したい多くの変数がありますが、それらの有無によって式が変化するため、すべてのケースを満たすにはばかげた数の条件が必要になります。上記の最初の例のように Where() ステートメントを追加できると思っていましたが、すべての基準を含む単一の式にはなりません。したがって、私はラムダ自体をそのまま作成しようとしています:
そして、それを context.Items to evaluate の場所に渡します。A) そうですか、B) もしそうなら、どのようにしますか?
編集:
結果は
トップ x (pageSize で表される) がないのはなぜですか?
linq - linq to sql 複数の Where() ステートメントが単一の式を作成しない
私の理解では、次のコードです。
次のようなクエリになります(日付が条件を通過すると仮定します):
手順を踏んで、2 つの Where() ステートメントが設定されていることを確認しましたが、things.ToList() を呼び出すと、クエリが取得されます。
実際のクエリに組み込まれている 2 つの場所が実行されないのはなぜですか?
vb.net - linq式を使用した動的プロパティセッター?
次のことを行う単純な関数を作成したいと思います。
使用法:
c# - linq 式を使用して、どのようにデリゲートを作成して返すことができますか?
C# では、linq 式を使用して特定のメソッドの呼び出しを生成しようとしています。メソッドのパラメーターの 1 つはデリゲートです。デリゲートとして渡したいメソッドの MethodInfo がありますが、デリゲートを作成するための linq 構文がわかりません。
これは少し不自然ですが、これが私がやろうとしていることを示していることを願っています:
問題は、デリゲートのコンストラクターが IntPtr を要求していることです。それを取得する方法がわかりません! New() 式メソッドを使用するよりも、デリゲート オブジェクトを作成するより直接的な方法はありますか?
c# - Linq 式の変換
私が達成しようとしていることの正確な議論がわからないので、いくつかのコードを書きました:
これは可能ですか?
c# - タイプ 'Product' の変数 'x' がスコープから参照されていますが、定義されていません
Product
クラスライブラリプロジェクトで名前が付けられたクラスがあります。SubSonic SimpleRepository
オブジェクトを永続化するために使用しています。Product
クラスには次のようなメソッドがあります。
この関数を次のように呼び出しています。
Load
から呼び出すとBindData
、例外がスローされます。
どうすればこれを解決できますか。
編集:-SubSonic
コードをステップ実行することで、この関数によってエラーがスローされることがわかりました
asp.net-mvc - .NET MVC 強く型付けされたヘルパー - プロパティから値を取得しますか?
強く型付けされたヘルパーを作成しています (ref: SO question )。以下のコードで「コメント」されているように、表現されたプロパティから何らかの方法で値を取得して、オプションのselectedValue
パラメーターをバイパスすることは可能ですか?
linq - サブコレクションの予測-EF4
EF4を使用した次のモデルを想定します。
次に、Linqを使用してこの構造を投影できます。
これまでのところ、これは完全にsqlに変換されます。
ここで問題になりますが、このクエリでwhere句の述語を抽出したい場合はどうなりますか?
これはコンパイルされますが、EF4はFuncであり、式ではないため、述語をSQLに変換する方法がないため、実行時に失敗します。
Expression<Func<OrderDetail,bool>>
詳細がICollectionであるため、OrderDetailsの".Where"がIEnumerable"Where"にリンクしているため、述語をanに変更しても機能しません。
それで、トラバースされるプロパティがIEnumerableまたはsimilairである場合、より大きなLinqクエリの一部を抽出することは可能ですか?