問題タブ [predicate]

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

.net - 作成されたサブクラスのタイプに基づいて、基本クラスのオブジェクトのコレクションをどのようにフィルタリングしますか?

説明を助けるためにこの例を書きました。ご覧のとおり、オブジェクト階層があります。GetFeatures() 関数を変更して、インスタンス化したオブジェクト タイプのコンストラクターによって追加された機能のみを返すようにしたいと考えています。たとえば、BasicModel.GetFeatures(new LuxuryModel()) は、機能「レザー シート」と「サンルーフ」のみを返す必要があります。必要に応じてリフレクションを使用してもかまいません。

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

sql - インライン ビューをプレディケイト プッシュすると、クエリの速度が低下する可能性があります。

私はパフォーマンスを向上させるためにリファクタリングに取り組んでいるやや厄介なクエリを継承しました。

このプロセス中に、私が個人的な好みで行ったことの 1 つは、ANSI-99 結合構文のすべてを「内部結合」および「左外部結合」ステートメントからクエリの述語に変更することでした。2 つの非常に奇妙なことに気付きました。説明をいただければ幸いです。

  1. 「INNER JOIN...」構文から結合を変更すると、説明計画が変更されました。ANSI 99 構文を使用すると、Oracle は結合される列に対して全表スキャンを実行しました。結合構文を変更した後、述語のプッシュが行われるようになりました。結合構文によって説明計画が変更されるのはなぜですか?
  2. インライン ビューにプレディケートをプッシュすると、実際には、クエリが非常に大幅に遅くなります。(結合を変更する前に) 約 3 秒で実行されていたクエリ。現在、9秒かかります。正直なところ、私は説明計画を読むのはかなり初めてなので、クエリの再構築によって別の理由で速度が低下した可能性は十分にあります。しかし、最終的に私の質問は次のとおりです。

返信ありがとうございます。これが明確でない場合は申し訳ありません...

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

c++ - C++ の関数に単項述語を渡す

アイテムを表示するクラスのポリシーを確立する関数が必要です。例えば:

これは、 BOOLEAN_PRED_T が次のようなブール述語型への関数ポインタであると想定しています。

たとえば、渡された述語がTRUEの場合は何かを表示し、falseの場合は表示しません。

上記の例は、bool を返し、int を受け取る関数に対して機能しますが、SetDisplayPolicy 引数には非常に一般的なポインターが必要なので、UnaryPredicate を考えましたが、boost 関連です。STL/C++ の関数に単項述語を渡すにはどうすればよいですか? unary_function< bool,T >戻り値としてboolが必要なため機能しませんが、最も一般的なアプローチで、「boolを返す単項関数」だけをユーザーに求めたいと思います。

私は自分のタイプを次のように派生させることを考えました:

それは良いアプローチでしょうか?

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

c# - オブジェクトが演算子 X のオーバーロードを「想定」する方法は?

オブジェクトの不足している演算子のオーバーロードを無視し、代わりに実行時にそのチェックを処理するように C# コンパイラに強制する方法はありますか? int 型、string 型、ushort 型などのさまざまな属性を持つ複数のオブジェクトを含むコンテナーがあるためです。そのコンテナの検索機能を作っているのですが、いろいろな分野で検索できるようにしたいと思っています。

述語とラムダ式を使用しています。

これは私が欲しいものです:

ID と Date がコンテナのオブジェクトのフィールドであると仮定します

これは私が今日しなければならないことです(ただし、動作します):

この追加のキャストは、最初の例と比べて見栄えがよくありません。これを行う必要はありません。代わりに実行時にこれをチェックするオプションが欲しいです。

これを達成する方法はありますか?

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

c# - DateTime 変換でラムダ式 OrderBy が必要

データ型 String であるが実際には解析可能な DateTime を含む値に対して OrderBy を実行できるラムダ式 (Linq、C# 3.5) を作成しようとしています。

たとえば、典型的な値は "5/12/2009" 、 "1/14/2008" などです。

以下の OrderBy 句は (文字列データのように) 順序付けには正しく機能しますが、実際には値を DateTimes として扱い、Date による並べ替えを実行したいと考えています。(sortColumn は「dateCreated」のようなものになります。)

これを行うために述語の値を変換する方法はありますか? どんな助けでも大歓迎です!

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

c# - 式を変換する方法> 述語へ

をパラメーターとして受け入れるメソッドがExpression<Func<T, bool>>あります。List.Find() メソッドの述語として使用したいのですが、List が取る述語に変換できないようです。これを行う簡単な方法を知っていますか?

アップデート

tvanfosson と 280Z28 からの回答を組み合わせて、これを使用しています。

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

asp.net - Linq to Sql - 特定の情報のみを選択する (Predicate Builder を使用)

Predicate Builder で Linq to Sql を使用しており、データベースから取得する情報の量を最適化しようとしています。特定のフィールドのみを選択して、グリッドビューに表示したいと考えています。必要なものだけを選択すると、追加した検索パラメーター (以下を参照) が機能せず、PredicateBuilder も機能しません。これが私が現在行っていることです(これは機能しますが、情報が多すぎるすべてを取得します)

必要なものだけを選択するように変更すると、次のようになります。

次に、情報が選択されている場合 (つまり、p.SomeAttribute を選択した場合)、その属性を検索 (where 句を追加) できることに気付きましたが、そうでない場合は検索できません。また、述語ビルダーを使用すると、アイテム全体を選択した場合 (つまり、p を選択した場合) にのみ機能します。これが行う必要があるのは、検索する属性を選択する必要のない SQL ステートメントを作成することだけです。これを機能させて必要なものだけを選択し、何でも検索して prediate builder を機能させ続けるにはどうすればよいですか? どんな助けでも大歓迎です!ありがとう

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

c# - 述語とラムダ式

最近、.net 3.0(Windowsフォーム、C#)に移行しました。述語とラムダ式についてもっと知りたいです。どこで使うべきですか?それらはパフォーマンスを改善しますか?そしてそれらは内部でどのように機能しますか。ありがとう。

0 投票する
7 に答える
33409 参照

c# - 複数の述語を組み合わせる

c# .NET 2.0 で何か方法はありますか! 複数の述語を組み合わせるには?

次のコードがあるとしましょう。

これは私に与えます:

これはかなりクールなものですが、複数の述語を使用してフィルタリングできるようにしたいことはわかっています。

ですから、次のように言えるようになりたいです。

取得するには:

どうすればこれを達成できますか?現在、完全なリストを 2 回フィルタリングし、後で結果を結合しています。しかし残念ながら、これは非常に非効率的であり、さらに重要なことに、元の並べ替え順序が失われます。これは私の状況では受け入れられません。

また、非常に多くのフィルター/述語が存在する可能性があるため、任意の数のフィルター/述語を反復できる必要があります。

繰り返しますが、.NET 2.0 ソリューションである必要があります。残念ながら、新しいバージョンのフレームワークは使用できません。

どうもありがとう。

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

c# - 述語をカプセル化するためのパターン/プラクティス

私たちのほとんどは、ある時点でこれに対処しなければならないと思うので、質問したいと思いました.

BLL に多くのコレクションがあり、同じ古いインライン (匿名) 述語を何度も書いていることがわかった場合、明らかにカプセル化のケースがありますが、それを達成するための最良の方法は何ですか?

私が現在取り組んでいるプロジェクトは、昔ながらの、すべてに答える、静的クラスのアプローチ (たとえば、User クラスと静的 UserPredicates クラス) を採用していますが、それはやや手間がかかり、少し面倒に思えます。

私は主に C# で作業しているので、そのコンテキストを維持することが最も役立ちますが、これは他の言語について聞くのに十分な一般的な質問だと思います。

また、LINQ と Lambda の出現により、これを実現する方法に違いがあると予想されるので、.Net2.0 と 3.0/3.5 の両方のスタイルでこれを行う方法を知りたいと思います。

前もって感謝します。