問題タブ [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.
c# - ITypedListでLinqを実行するにはどうすればよいですか?
これまでのところ、Linqは、仮想プロパティではなく、クラスの既存のフィールドとプロパティで使用できることがわかりました。つまり、動的Linqであっても、ITypedListはLinqでは機能しません。
次のコードを試しました。
次に、「タイプ'Contact'にlinkedPropertyNameまたはフィールド'Customer'が存在しません」という例外に遭遇しました。
動的Linqをトレースしたところ、次のコードで例外が発生していることがわかりました。
Expression ParseMemberAccess(Type type、Expression instance)のメソッド内。
Linqでサポートされているのは、フィールドとプロパティの実際のメンバーだけであることは明らかです。
しかし、仮想プロパティでLinqを実行する方法を誰かが見つけた可能性があることを私はまだ期待しています。
あなたがそうする方法を見つけたら、あなたの経験を共有してください。
前もって感謝します、
イン
.net - 動的GroupByは、動的LINQの動的Whereと連携しますか?
この動的 LINQ ライブラリを Linq-to-Entities と共に使用します。
私はクエリを作成し、その後それを繰り返しますforeach(object e in query){}
query=db.Table1.Where("it.FieldA>10").Select("it.FieldB");
動作します。
query=db.Table1.Where(e=>e.FieldA>10).GroupBy("it.FieldB", "it").Select("key")
動作します。
ただし、ステートメントに沿ったメッセージでquery=db.Table1.Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key")
原因となります。EntitySqlException
The query syntax is not valid., near keyword 'FROM', line 2, column 1.
foreach
例外なく動作させるにはどうすればよいですか?
db.Table1.Where(e=>e.FieldA>10)
の型はですがIQueryable<Table1>
、の型db.Table1.Where("it.FieldA>10")
はであることに注意してくださいSystem.Data.Objects.ObjectQuery<Table1>
。
c# - Linq.Dyanmic GroupJoin の実装
GroupJoin の Linq.Dynamic プロジェクトで拡張メソッドの作成に取り組んでいます。しかし、何らかの理由で実行されません。サインは合っているようです。
このコードで次のエラーが発生します。
型 'System.Linq.Queryable' のジェネリック メソッド 'GroupJoin' は、指定された型引数および引数と互換性がありません。メソッドが非ジェネリックの場合は、型引数を指定しないでください。
各部分の結果を見ると、一致しているように見えます: 次の GroupJoin を記述します。
次のデバッグを取得します。
次の GroupJoin を使用します。
次に、デバッグを見てください。
唯一の違いはList<T>
、IEnumerable との比較です。しかしList<T>
IEnumerableです。署名が間違っているようなエラーが表示されます。私はそれを理解することはできません。
どんな扇動も素晴らしいでしょう。
c# - 動的フィールド名を使用したLINQでのエンティティのクエリ
ASP.NETMVCで動的検索画面を作成しました。ビューにすべてのフィールドを表示する代わりに、ユーザーが検索するフィールドを選択できるように、リフレクションを介してエンティティからフィールド名を取得しました。
検索結果がコントローラーにポストバックされると、FieldNameとValueを含むFormCollectionを受け取ります。検索されているフィールドの数がわかりません。FormCollectionには、ユーザーが選択したフィールドのみが含まれています。
たとえば、データベースにクエリを実行するときに、そのフィールド名を取得してLINQステートメントに適用できるようにしたいと思います。
「キー文字列をfieldNameとして使用する」場合、p => p.FirstName == fieldValueDictionary [key] where key="FirstName"のようになります。Lambda式ツリーを使用しようとして失敗しましたが、DynamicLINQで少し成功しました。他の唯一の選択肢は、次のようなことを行うことです。
更新:次の投稿を通じてラムダ式ツリーの調査を行いました:
ラムダ式を動的に作成+linq+ OrderByDescending
LINQ:ラムダ式をパラメーターとして渡し、メソッドによって実行および返される
ラムダを取得して次のように出力するところまで到達しました: "p => p.FirstName"ですが、これをwhereで機能させることはできません。助言がありますか?私のコードは以下の通りです:
c# - 動的linqクエリでフィールドを参照するには?
動的にする必要があるクエリがあります。構文のほとんどは正しいと思いますが、グループ化する列の名前を付ける方法がわかりません。いくつかの異なるアプローチを試してみましたが、常にエラーが発生します - 「タイプ 'datarow' にプロパティまたはフィールド 'name' が存在しません」
次のようなものを使用する必要があると思いますがField<string>("name")
、わかりません。いくつかのフォーラムでこの問題を見てきましたが、問題を回避する方法を明確に答えている人は誰もいないようです。
linq-to-sql - DLinq は、Linq to SQL または Entity Framework のどちらに変化しましたか?
ドリンクはどうした?数年前に廃盤になったと聞きました。
そのコードの一部は、Linq to SQL または ADO.NET Entity Framework を作成するために使用されましたか? どれ?言い換えれば、後者の 2 つのテクノロジのうち、古い DLinq の新しいアバターはどれですか?
私は ADO.NET Entity Framework を学んでおり、まだ始めたばかりなので、これらの質問への回答がこのテーマをよりよく理解するのに役立つと信じています。私は通常、技術的なトピックの歴史と背景について学び始めます。自信を高め、もっと学びたいというモチベーションを高めてくれるウォームアップエクササイズのように感じます. また、他の開発者が持っていない可能性のある物事を視野に入れます。
ここ数か月間、Linq to Objects と Linq to SQL を多少読み、Linq to SQL によって生成されたボイラープレートと Entity Framework の Entity Model ツールによって生成されたボイラープレートを比較しました。
2 つのモデルのDataContext
/がどのように関係しているか、後者が を使用する場所でObjectContext
前者がどのように使用するかなど、組み込み関数をいくらか理解できます。どちらも標準の Linq クエリ演算子をサポートしているためです。Table<T>
ObjectQuery
IQueryable
Linq to SQL は、DLinq のぼったくりのように見えます。
linq-to-sql - 動的テーブル名linq-to-sql動的LINQ
ユーザーが選択したコンテンツに基づいて動的にクエリを作成したいのですが、これをLINQ-t0-SQLで実行したいと思います。私はこれを見ましたが、datacontextでSQLステートメントを使用したくありません。
少しグーグルすると、動的LINQを使用してこれを実行できると感じています。誰かが動的LINQで同様のシナリオの例を提供しますか?
linq - Linq: Dynamic Query Contruction: query moves to client-side
I've been following with great interest the converstaion here:
Construct Query with Linq rather than SQL strings
with regards to constructing expression trees where even the table name is dynamic.
Toward that end, I've created a Extension method, addWhere, that looks like:
[thanks to Timwi for the basis of that code]
Which functionally, works.
I can call:
and it's functionally equivalent to :
ie, the rows returned are the same.
However, I started watching the sql log, and I noticed with the line:
The Query generated is:
whereas when I use the line
The query generated is :
So, the comparison is now happening on the client side, instead of being added to the sql.
Obviously, this isn't so hot.
To be honest, I mostly cut-and-pasted the addWhere code from Timwi's (slightly different) example, so some of it is over my head. I'm wondering if there's any adjustment I can make to this code, so the expression is converted into the SQL statement, instead of being determined client-side
Thanks for taking the time to read through this, I welcome any comments, solutions, links, etc, that could help me with this. And of course if I find the solution through other means, I'll post the answer here.
Cheers.
c# - エンティティデータモデル、動的Linq、複数テーブルの動的Where句、強く型付けされた戻り型
oDataサービスのメソッドを作成する場合、以下のlinqがあり、結果をフィルター処理するための動的な「where」句が必要です(結合の「new」はエンティティデータモデルの複合PK用です)。
私のLinqはあまり良くなく、DynamicQueryableクラスを使用して、実行時に「where」句を生成しようとしています(さまざまな変数から構築されています)。
「where」句はAttributeエンティティとAttributeItemエンティティの値をフィルタリングするため、常に次のようなものが含まれます。
「タイプ'ProductListing'にプロパティまたはフィールド'Attribute'が存在しない」ため、実行時に失敗します。
ProductListingエンティティのすべての要素と、フィルタリングする必要のあるAttributeおよびAttributeItemの要素を含む匿名型を「select」に作成しようとしましたが、メソッドから戻るには、「ProductListing」型の強く型付けされたエンティティが必要です。電話。
誰か助けてもらえますか?動的な場所の代わりに動的な結合を使用する必要がありますか?選択していないエンティティに対してWhere-ingする方法はありますか?匿名タイプ/"let"を選択し、後で強いタイプのエンティティを構築する必要がありますか?
どうぞ、どんな助けでも大歓迎です。
rposbo
c# - 動的Linq:外部キーを持たない参照関係
次の説明で説明されている動的Linq機能を使用しています。
これは、外部キーが適切に設定されているオブジェクトのみを参照している限り、正常に機能します。
外部キーが設定されていないテーブルを参照する方法はありますか?
つまり、次のようなものです。