問題タブ [predicatebuilder]

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

c# - PredicateBuilder を使用した 2 つの異なるエンティティ タイプのクエリ

LinqKits PredicateBuilder を使用して、ユーザーがテキスト ボックスに検索語を入力し、2 つのデータベース テーブル/エンティティ セットからレコードを返せるように必死に試みていますが、どこにでも行くのに苦労しています。(単純化された) データベース構造は次のとおりです。

したがって、各人は 0 個のエイリアスを持つことも、複数のエイリアスを持つこともできます。私がやろうとしているのは、ユーザーが名前を検索し、その名前が Person テーブルまたは Alias テーブルの名前と一致する Person テーブルから行を引き戻すことです。これまでのところ、私は持っています:

People から Alias に変換しようとしているため、これは機能しません。基本的に、私は完全に立ち往生しており、2 つの異なるテーブルに対して Or クエリを実行できるかどうかさえわかりません (?)

0 投票する
3 に答える
3112 参照

linq - PredicateBuilder/AsExpandable を使用しているときに linq クエリをトレースするにはどうすればよいですか?

PredicateBuilder を使用しています。つまり、AsExpandable 拡張メソッドを使用しています。問題は、ObjectQuery.ToTraceString() 呼び出しを実行できるようにクエリを ObjectQuery にキャストしようとすると、次のエラーがスローされるため、SQL クエリをトレースできなくなったことです...

タイプ 'LinqKit.ExpandableQuery`1[Genesis.Person]' のオブジェクトをタイプ 'System.Data.Objects.ObjectQuery' にキャストできません。

何か案は?

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

linq-to-sql - LINQ to SQL PredicateBuilder

ここで見られるようにPredicateBuilderを使用していますhttp://www.albahari.com/nutshell/predicatebuilder.aspx、すべてがうまく機能し、動的LINQ to SQL式を生成できるようになりましたが、私が理解していないのは、このようなループで:

なぜその一時変数を使用する必要があるのですか?、「f」イテレータ変数を使用しようとしますが、参照によって渡されるように、各反復のリストの最後の値のみを取得します。

0 投票する
3 に答える
1932 参照

linq-to-sql - PredicateBuilder とネストされた述語

Albahariの Predicate を使用して、次のような TSQL ステートメントを作成しようとしています。

または次のような述語: c => (c.VendorID = x || c.VendorID == x2 ...) && (c.FranchiseID == f || c.FranchiseID == f2 ...)

しかし、私は問題を抱えています。これが私の試みです:

私のテーブルには 60,000 行あるため、データベースに移動してそれらをすべて選択すると、フィルタリングはオプションではありません。チャネルは LinqToSql エンティティです。また、SelectedFranchises または SelectedVendors のいずれかを空にすることはできますが、同時に両方を空にすることはできません。編集:このリストをchannel.Franchise.Nameでも区別する必要があります..ストアドプロシージャを使用する必要がありますか?

これをどのように行いますか?

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

c# - OrderBy を使用した Linqbuilder クエリ

私は1:Mの関係を持っています。

ユーザーからの入力に基づいて動的クエリを作成し、親エンティティとその子のリストを返します (述語ビルダーを使用:

(new TDataContext().Ps.Where(predicate) を正常に実行)...

ただし、子エンティティのみにあるフィールドで結果を並べ替える必要があります。

私は途方に暮れています: new TDataContext().Ps.Where(predicate).OrderBy(p => p.Cs. ??)

ここで、Ps = Cs = 子エンティティとの親コレクション関係

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

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

linq-to-sql - ISNUMERIC に一致し、指定された範囲内にある値を選択する T-SQL。(さらに Linq-to-SQL)

(NVARCHAR) 列の 1 つが数値範囲内にあるテーブルから行を選択しようとしています。

残念ながら、SQL 仕様の一部として、AND 句を短絡する必要はありません (MSSQL Server EE 2008 では短絡する必要はありません)。詳細: SQL WHERE 句の短絡は評価されますか?

私の次の試みは、これを試して、CONVERT の遅延評価を達成できるかどうかを確認することでした。

しかし、CONVERT の結果に < (または任意の比較) を使用できないようです。エラーで失敗します

私は逃げることができます

したがって、明らかな解決策は、選択ステートメント全体を別の SELECT と WHERE でラップし、内部選択から変換された値を返し、外部選択の場所でフィルター処理することです。残念ながら、これが私のLinq-to-sqlの問題の出番です。1つの範囲だけでなく、潜在的に多くの範囲、またはレコードの存在によってフィルタリングしています(除外した日付範囲の選択と比較がいくつかあります. )

基本的に、次のようなものを生成できるようにしたいと考えています。

(これらの where オプションのそれぞれにいくつかの他の句があります。) 内部選択で ISNUMERIC 以外の値を除外すると、これは明らかに機能しません。

前述したように、Linq-to-sql (および PredicateBulider) を使用してこれらのクエリを構築していますが、残念ながら

これに変換され、最初の問題が失敗します。

私の最後の手段は、比較ごとに同じテーブルの二重選択に対して外部結合する必要がありますが、これは実際にはアイデアの解決策ではありません。誰かが以前に同様の問題に遭遇したことがあるかどうか疑問に思っていましたか?

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

c# - linq2sqlおよびOR演算子で述語ビルダーを使用する方法

それぞれ1対多の関係を持つ2つのテーブル(TABLE1、TABLE2-一意です)と、両方のテーブルのID列間の外部キーがあります。

linq2sqlを使用して、すべてのTABLE1エントリを選択しようとしています。これにより、対応するTABLE2値に、渡すリストに少なくとも1つの項目が含まれるようになります。

これは、 LINQPad (すばらしいプログラム)でテストするために使用していたサンプルコードですが、エラーNotSupportedException:クエリ演算子「Any」に使用されるサポートされていないオーバーロードが発生します。

アップデート

LinqPadでLinqKitを使用する場合は、LinqKit.dllへの参照を追加し、[PredicateBuilderを含める]をオフにしてから、[追加の名前空間のインポート]タブでLinqKitを追加します。

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

sql - LinqでネストされたOR条件でPredicateBuilderを使用する方法

私はPredicateBuilderを非常に喜んで使用してきましたが、これまでは、連結されたANDステートメントまたはORステートメントのいずれかのみを含むクエリにのみ使用していました。ここで初めて、次のようないくつかのANDステートメントとともにネストされたORステートメントのペアが必要になります。

Albahariのドキュメントを使用して、次のように式を作成しました。

これにより、2つのOR句を完全に無視するSQLが生成されます。

次のようなORフレーズだけを使用してみた場合:

私は次のように期待どおりにSQLを取得します:

次のようなANDフレーズだけを使用してみた場合:

私は次のようなSQLを取得します:

これは最初のクエリとまったく同じです。私はとても近くにいるようです、それは私が行方不明になっているような単純なものに違いありません。誰かが私がここで間違っていることを見ることができますか?

ありがとう、

テリー

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

c# - Linq In Clause&Predicatebuilding

2つのテーブルがあります。ReportReportData。ReportDataには制約ReportIDがあります。

ReportDataの述語条件が満たされているすべてのReportオブジェクトを返すようにlinqクエリを作成するにはどうすればよいですか?SQLでは次のようになります。

これが私の述語を構築する方法です:

これは、現時点での私のクエリ構築です。

次のことも試してみました。publicoverrideIQueryableGetReports(Expression> predicate、LLReportsDataContext reportDC){if(reportDC == null)throw new ArgumentNullException( "reportDC");

ただし、次の例外が発生します:「クエリ演算子「Where」に使用されるサポートされていないオーバーロード」。

更新 これはそれを修正しました:

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

c# - C# PredicateBuilder エンティティ: パラメーター 'f' は、指定された LINQ to Entities クエリ式にバインドされていませんでした

動的フィルターを作成する必要があり、エンティティを引き続き使用したいと考えていました。このため、albahari の PredicateBuilder を使用したいと思いました。

次のコードを作成しました。

コードを実行すると、日付フィルターではないフィルターが 1 つしかありませんでした。したがって、内側の述語のみが満たされました。述語が実行されると、次のエラーが発生しました。

パラメーター 'f' は、指定された LINQ to Entities クエリ式でバインドされていませんでした。

答えを探しているときに、次のページを見つけました。しかし、これはすでに LINQKit に実装されています。

他の誰かがこのエラーを経験し、それを解決する方法を知っていますか?