問題タブ [linqkit]
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.
c# - LinqKit を使用して単一の複雑なプロパティにクエリを適用する
編集: LinqPadの助けを借りて、コードを最小公倍数に減らすことができました。
複雑な LinqKit 述語を返すメソッドがあります。望ましい結果は、このクエリを実行する必要があるときはいつでもこのメソッドを再利用できることです。Where
これらのエンティティのコレクションに対する句では正常に機能IQueryable
しますが、このエンティティをオブジェクトの単一のプロパティとして使用し、述語を使用してクエリを実行したい場合、この述語を使用する方法を一生理解できませんそのエンティティの他のプロパティ。
私が言いたいことの簡単な例を挙げます。
これはうまくいきます:
... Entity Framework からの私のオブジェクトの 1 つでStructureAnalyses
あると仮定します。IQueryable
StructureAnalysis
しかし、関連する StructureAnalyses でフィルタリングして、タスクを取得したいとしましょう。どうすればそのようなことができますか?実際にquery
は、再利用可能な関数によって構築され、predicate
それを呼び出す別の関数で構築されていることに注意してください。そのため、2 つのクエリを単純にマージすることはできません。
コンパイルはできますが、クエリを実行しようとすると失敗します。
...with "パラメーター 't' は、指定された LINQ to Entities クエリ式にバインドされていません。" など。この例では、DB 内のすべての型エンティティTasks
を含む IQueryable です。Task
私はまた、この行を変更しようとしました:
...に:
これもコンパイルされますが、 「タイプ 'System.Linq.Expressions.FieldExpression' のオブジェクトをタイプ 'System.Linq.Expressions.LambdaExpression' にキャストできません」で失敗します。当然のことです。
Expand
また、 との両方query
を呼び出してみましcompiled
たが、効果はありませんでした。また、次の「解決策」も試しました。
- これは不完全なようです(
Utility
未定義です): https://stackoverflow.com/questions/26105570/linqkit-the-parameter-was-not-bound-in-the-specified-linq-to-entities-query-e - これは、私が信じることを拒否する「それはできない」と単純に言っています: Entity Framework Code First 4.3 / LINQKit predicate for related table
linq - LinqKit PredicateBuilder linqクエリへの追加
WHERE
LinqKit Predicate Builder を使用して、追加のオプション条件を追加したい linq クエリがあります。ただし、追加の述語を機能させるのに苦労しています
これは私の最初のクエリです:
ご覧のとおり、そこJOIN
にあります。次に、必要に応じて述語を追加します。
ただし、生成された SQL は変更されず、クエリは同じ数の行を返します。
次のように Expand 変換を行う必要があるかもしれないと思いました。
しかし、これは実行時エラーを引き起こします。
問題は、すでに純粋なオブジェクトではないクエリに述語を追加していることだと思いますがOrganisationProduct
、適切な場所に述語を挿入する方法についてアドバイスをお願いします。
ありがとう、そしてみんな:-)
c# - 述語を結合ステートメントに使用する方法
ユーザーが独自のクエリを作成できるようにしようとしています。この問題を解決すると思われるこのコードを見つけました:
これらは私のモデルクラスです:
しかし、PredicateBuilder
次のような結合ステートメントでを使用する方法が必要です。
linq - LINQ で述語を使用して CRM 2011 をクエリする方法
述語にlinqkitを使用しようとしています。コンパイルしようとすると、次のコードが表示されます。
エラー 1: 'System.Linq.IQueryable' には 'Where' の定義と最適な拡張メソッド オーバーロード 'System.Linq.Queryable.Where(System.Linq.IQueryable, System.Linq.Expressions.Expression>)' が含まれていませんいくつかの無効な引数があります
エラー 2引数 2: 'System.Linq.Expressions.Expression>' から 'System.Linq.Expressions.Expression> に変換できません
それを修正するために何をする必要があるか教えてください。
ありがとう
c# - Linq 述語クエリの結果が、それ以上の Linq Join に対して機能しない
述語クエリの結果を使用して、Linq クエリで結合を記述しています。しかし、それは次のエラーをスローしています。ただし、SQL で同様のクエリを実行すると、期待される結果が返されます。
注:最後に ToList() を削除したため、エラーはスローされませんが、アカウント オブジェクトを使用しようとすると、同じエラーが再びスローされます。
エラー
タイプ 'System.NullReferenceException' の例外が Microsoft.Xrm.Sdk.dll で発生しましたが、ユーザー コードでは処理されませんでした。
追加情報: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
c# - 述語式が変更されたかどうかを確認するには?
これは私の述語式で、特定の条件で式を追加します。
同じく
ここで私の質問は、この式がこの条件を通過しない場合、何か式があるでしょうか? そして、それが式を返さないかどうかはどうすればわかりますか。
単純に私がしたいのは-
if(predicate==null)
またif(predicate contains no expression)
c# - Entity Frameworkでクエリをパラメータ化する方法は?
私はEFが初めてです。プロジェクトのリストを含むテーブルがあります。ソフトウェアで、すべてのプロジェクトを検索するクエリを見つけました。
これは問題ないようですが、パラメータ化する方法がわかりません。EF のクエリ ロジックを再利用しようとする検索機能を実装しているため、これが必要です。
これはタプルの List を取ります。各タプルには、基本的に属性と検索語のリストがあります。
例えば。Tuple(FirstName , { Prasaanth ,Bill } ; Tuple( LastName , { Neelakandan , Gates } ;
これは、FirstName が Prasaanth または Bill であるプロジェクトを検索する選択クエリを作成する必要があることを意味します。リストに用語が 1 つしかない場合。
例えば。Tuple( Company , { Microsoft} ; 次に、クエリで where 条件を 1 つだけ検索する必要があります。
私はいつでもif条件を書くことができます:
しかし、検索するには属性が多すぎます。
私はこれを行うADO.NETの方法を知っています:
EF クエリでこのようなことを行う方法がわかりません。
1) EF で動的属性の検索を行う方法はありますか? または '"+attribute+"' を使用してパラメーター化しますか??
2) を使用する代わりに、構造を単純化するために使用できるより良いデータ構造はありList<Tuple<string, List<string>>
ますか?
3) サードパーティの LINQKit または動的 linq を使用することをお勧めしましたが、それを EF クエリに統合する方法がわかりません。
これの多くが大学生のコードのように聞こえる場合は、申し訳ありません。追加の詳細が必要な場合はお知らせください。
よろしく、 プラサント
更新: Andriy's answer による作業方法。ここでの私の質問は、データベース内の特定のエントリで Name is Null と表示されている場合、これは機能しないということです。
式を変更して、Contains メソッドを次のように変更できます。
prop, typeof (String).GetMethod("Contains"), new Expression[] { Expression.Constant(v)
属性 (prop) の値が null の場合に機能しますか?