問題タブ [dynamic-linq]
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.
linq - LINQ-NHibernate.LINQを使用して複数の条件で部分検索を実行する方法
ユーザーがコンマで区切られた複数の都市を入力できる検索ページがあり、都市が検索条件に入力されたものであるすべての不動産プロパティを取得する必要があります。たとえば、ユーザーは次のように入力します
都市=ダラス、オースティン
ユーザーが完全な都市名を入力すると、私が持っているクエリは正常に機能します
var cityList = new List {"Dallas"、 "Austin"}; var property = Reporsitory.AsQueryable .Where(x => cityList.Contains(x.City)).ToList();
ただし、Dal、Ausに入るだけでは、機能しません。これらの部分検索を機能させるにはどうすればよいですか。Dynamic LINQが唯一の答えですか?ありがとう!
linq - トークン化された文字列に対する string.contains の Dynamic Linq クエリを構築するための汎用関数
Expression.And
およびを使用して、Expression.Or
動的な linq クエリを作成しています。クエリ対象のプロパティ/フィールドが文字列で、文字列にスペースが含まれている場合、スペースで文字列をトークン化し、トークンで「And'd」サブクエリを作成したいと思います。
これが私が非一般的な方法で意味することです
私がやりたいのは、たとえば呼び出すだけで十分な汎用性のあるメソッドを作成する方法を見つけることです。
そして、私は同じ結果になります。以下は私がいる場所ですが、 と でFunc
stringProp アクセサーを使用できませんExpression
。アクセサー式 (文字列プロパティの) と呼び出し式 (を呼び出すstring.Contains
)を何らかの方法で組み合わせる必要があります。
また、これがすべて悪い考えのように見えるかどうかも知りたいです。
c# - Dynamically select and update a column value in LINQ resultset
I have a scenario in which there exists a LINQ resultset; I used the following query
Now I want to use this resultset and update a column's value. The column is being selected dynamically via a string variable.
The code which I am trying to use is:
Please help me out here as to how do I achieve this.
c# - ユーザーが GUI ウィザードから動的式を作成できるようにする
アプリケーションのユーザーが、厳密に型指定されたオブジェクト モデルのプロパティを使用してカスタム条件/式を構築できる GUI パネル/ウィザードを構築したいと考えています。 基本的にはこのようなものです。
構造は入れ子にすることができ (LHS/RHS は他の式で構成される場合があります)、or/and/foreach オペランドを使用して他の式と組み合わせることができます。
各サブ式の正しい型と値をチェックできるようにしたい。理想的には、最後のクエリは linq クエリまたは式ツリーである必要があります。
私の目標は、ユーザーが独自の戦略や単純なワークフローを設計できるようにすることです。
式を処理するためにどのタイプを提案し、動的クエリを作成するためのソリューションは何ですか?
式を文字列として表現することを考えています。
person.DateOfBirth > 1970 && person.Country != Country.Germany
.Where
次に、こちらで説明されているように、動的 LINQ ライブラリによって生成される拡張句のパラメーターとして連結を使用して、linq クエリを作成します。
動的に高度な表現を作成することは可能ですか、それともこのソリューションには制限がありますか?
どのような代替ソリューションを提案しますか?
c# - 任意のlinqテーブルで操作できる共通のメソッドセットを構築する
問題:リポジトリパターンを広範囲に使用して、複数のアプリケーションと機能のサブセクションにわたるデータストア(LINQを使用するMS SQL)での読み取り/書き込み操作を容易にします。私たちは、すべてが互いに似たようなことをする一連の方法を持っています。
たとえば、ProcessAndSortXXXXXクラスのメソッドがあります。
...と...
コードからわかるように、署名を確認してから、ClassErrorEntryとClassTimerLogEntryのインスタンスを構築しているreturnステートメントに到達するまで、これらはすべて非常に似ています。
すべてのリポジトリが継承する基本クラスに追加するユーティリティメソッドを作成したいと思います。
オブジェクトをインスタンス化し、それらを返すIEnumerableにパックするために使用できる引数を渡せるようにしたいと思います。
私はScottGuによるこの投稿を見つけました、そしてそれは私が必要とするもののほとんどを私に与えます。これは次のようになります(ドキュメントのサンプルから):
しかし、ここで私は行き詰まります。動的クエリを構築できるように、LINQテーブルとDataContextを一般的な方法で渡す方法についてのポインターまたは提案が必要です。
疑似コードで署名をモックアップすると、次のようになります。
これを理解すると、完成した署名が異なって見える可能性があることに気付きました。
ありがとうございました!
アップデート!
これで、匿名型を生成するように機能するコードがありますが、具象型に変換すると失敗します。
このメソッドを呼び出すコードは次のとおりです。
最後の行TestContext.WriteLine(result.ToList().Count.ToString());
は例外をスローしますSystem.InvalidOperationException: No coercion operator is defined between types 'DynamicClass1' and 'Utilities.Logging.ClassErrorEntry'.
ただし、このコードのチャンクは失敗します。
これは解析エラーで失敗します。Test method eModal.Repositories.Test.RepositoryBaseTest.TestConcreteClass threw exception:
System.Linq.Dynamic.ParseException: '(' expected, found 'ClassErrorEntry' ('Identifier') at char 19 in 'new ClassErrorEntry(Id) { ChassisAuthId = ChassisAuthId, Code = Code, Message = Message, Severity = Severity, Target = Target }'
19番目の文字位置がa(
であり、Validateメソッドに渡されたタイプが4の位置、つまり最初のを示しているため、文字位置が疑わしいかどうかはわかりません'C'
。
c# - WCF で DataContract として動的に作成されたクラス
DynamicClass
WCF メソッドから型のオブジェクトの配列を返す方法はありますか?
クライアントからの要求に応じて、データベース テーブルの列に、WCF サービスでDynamic Linq Libraryを使用しています。select
クライアント コードは次のようになります。
フィーチャーselect
は、 2 列のみにしたいテーブルの名前です。句の条件を満たすFeatureNameおよびFeatureIdwhere
。
ここでの問題は、クエリがサーバー上で正常に実行されることですが、WCF がそれをクライアントに送り返すことができないことです。私の推測では、選択した列のみを定義する動的に作成されたクラスは宣言されていないDataContract
ため、WCF はそれを操作できません。
それで、この問題の解決策はありますか?
または任意の代替?目標は、クライアント側ですべての列を必要としないため、データベース テーブルのすべての列を返したくないということです。したがって、すべての列をクライアントに送り返す意味はありません。クライアントはとにかくそれを破棄します。
c# - Dynamic Linq で Any() と Count() を使用する
注文数が 3 より大きく、ShipVia フィールドが 2 に等しい顧客の条件でレコードを取得する動的な Linq ライブラリ クエリを作成しようとしています。
以下は、私が試した構文です。
と
しかし、どちらも機能していません。2 番目のクエリでは、Any が true を返すため、Count では機能しません。これを実装する方法を提案してください。
vb.net - リンク。動的クエリを使用してコードを削減する
次のコードを使用して、LINQ クエリ内で見つかった情報を Table1 ディクショナリに入力します。
特定の TableXXX 辞書を埋めるには、上記の関数にどのような変更を加える必要がありますか? ご覧のとおり、以下の関数を使用して Table2 ディクショナリを埋めたくありません。
c# - 実行時に複数の linq 式を動的に追加する
条件オブジェクト (プロパティのリストを持つダム オブジェクト) を受け取り、その条件オブジェクトで "CreateExpression" メソッドを呼び出し、返された式を使用して結果をフィルター処理する 2 つの同様のメソッドがあります。
私の例の 1 つは、1 つの基準のみの引数を持ち、問題なく動作します。2 番目の方法では、List<Criteria>
and を使用して、リスト内の各基準を反復処理し、その式を生成してから、前の式に "and" します。最終結果は、linq クエリで使用できる 1 つの大きな式になるはずです。
ただし、この 2 番目の方法は機能しません。デバッガーを使用すると、述語が本体とラムダ式で内部的に表示されますが、SQL サーバーにヒットすると、where 句がまったくない select ステートメントだけが送信されます。
機能するメソッドは次のとおりです (1 つの基準オブジェクトを使用):
動作しないものは次のとおりです。
Predicate Builderを使用して初期式を生成しています。これらのメソッドは最初の (特異な) メソッドで動作するため、問題はないと思います。
ここで何が起こっているか知っている人はいますか?
編集 バックエンドがエンティティ フレームワークであることを忘れていました。