問題タブ [query-expressions]
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.
f# - F# でクエリ式を作成するにはどうすればよいですか?
ここでクエリ式を見てきましたhttp://msdn.microsoft.com/en-us/library/vstudio/hh225374.aspx
そして、なぜ次のことが正当なのか疑問に思っていました
しかし、あなたは本当にこのようなことをすることはできません
確かに、F# ではこのような構成可能性が許可されているため、述語を再利用できますか?? クリスマスのタイトルを特定の日付の前などの別の述語と組み合わせたい場合はどうすればよいでしょうか? クエリ全体をコピーして貼り付ける必要がありますか? C# はこれとはまったく異なり、述語を作成して結合する方法がいくつかあります。
f# - for..in.do を使用しない拡張演算式
拡張計算式とは、CustomOperation属性で定義されたカスタム キーワードを使用した計算式のことです。
拡張された計算式について読んでいるときに、@kvb による非常にクールな IL DSL に出くわしました。
コンストラクトを使用せずに操作がどのように構成されているのだろうかfor..in..do
。私の直感では、それはx.Zero
メンバーで始まるということですが、それを確認するための参照は見つかりませんでした.
上記の例が技術的すぎる場合は、スライドのコンポーネントが なしでリストされている同様の DSL を次に示しますfor..in..do
。
密接に関連する質問がいくつかあります。
- メンバーなしで拡張された計算式をどのように定義または使用しますか
For
(つまり、小さな完全な例を提供します)? それらがもはやモナドでなくても、私はあまり心配していません。DSL の開発に興味があります。 let!
とで拡張計算式を使用できますreturn!
か? はいの場合、そうしない理由はありますか?let!
と を使用した例に遭遇したことがないため、これらの質問をしreturn!
ます。
dynamics-crm-2011 - 非推奨のEntityName.account.ToString()の代わりに何を使用する必要がありますか?
QueryExpressionを設計するときは、常に次のハードコードされた構文を使用していました。
このブログでは、この列挙に基づく次の構文が使用されています。
私はそれがずっと好きでしたが、インテリセンスを使用してそれを見つけることができませんでした。次に、構文が非推奨であると説明されているこのディスカッションを見つけました。
では、 EntityNameの代わりに何を使用する必要がありますか?私はそれを少しグーグルで検索しましたが、有用なものを見つけることができません。ハードコードされた式の前に、ある種の列挙が優先されるように思われます。あれは正しいですか?もしそうなら、CRM 2011でそれを行う方法は?
dynamics-crm-2011 - クエリに依存せずに動的マーケティング リストのメンバーを取得する方法
動的なマーケティング リストのメンバーのリストを取得しようとしています。リストが 1 つ (または数個) しかない場合は、基になるクエリの結果を個別に取得できます。ただし、マーケティング リストの数が増えると、1 つずつ取得するのはまったく効果がなくなります。
静的なマーケティング リストの場合、それは簡単なはずです。QueryExpressionオブジェクトのContactに基づいて、すべてのマーケティング リストに対応する一連の GUID をフィルター処理するときに、エンティティContactのすべてのインスタンス (またはその作成に使用される基本型が何であれ) をフェッチできる必要があります。それは正しく認識されていますか?
(どのように) サーバー上のすべての動的リストの基になるすべてのメンバーを取得できますか?
編集: これは自動生成された fetch-XML です。
c# - FilterExpression の複数の条件
条件式を使用していますが、複数の条件を に追加できませんFilterExpression
。誰でも助けることができますか?ソースコードをここに投稿しました。
フィルターを使用した条件式:
// フィルター 2
dynamics-crm-2011 - QueryExpression オブジェクトを使用してマーケティング リストのメンバーを取得する方法は?
私はQueryExpressionを頻繁に使用していますが、これまでのところ、これは単純に get-this-from-that または put-this-in-that でした。最近、LinkedEntityというものがあることを知り、探し始めました。例として、SO に関する関連する質問に触発され、GUID を指定してリストのすべてのメンバーを取得するための式を作成し始めました。
ただし、私が見つけたすべての例は、この例が示すように同じパターンに従います。この質問から、それが時代遅れのアプローチ (CRM 4.0) であることを知りました。より最新の例を見つけることができず、リンケージを設計する方法がわかりません。
サンプルコードを提供してくれる人はいますか?
2 つのエンティティをリンクする fetch-XML を作成しましたが、それをQueryExpressionエンティティに変換する方法がわかりません。私はこのようなものを持っています。助言がありますか?
php - goMongoDBのようなクエリ式オブジェクト評価の実装
私はMongoDbのような(http://docs.mongodb.org/manual/applications/read/#find、docs.mongodb.org/manual/reference/operators/)クエリ式オブジェクト評価関数の実装またはクラス。すべての高度な機能を網羅しているわけではなく、拡張可能なアーキテクチャを備えている必要があります。
MongoDBのようなクエリ式オブジェクトは、理解と使用が簡単で、クエリと検索対象のオブジェクトの両方が連想配列であるため、クリーンで自己説明的なコードを記述できます。
基本的に、php配列から情報を抽出するための便利な機能について話します。配列構造(arrayPath)を知っていると、複数のネストされたループを必要とせずに、多次元配列データに対して操作を実行できます。
MongoDbに慣れていない場合は、検索する特定の式オブジェクトと配列を確認してください。
簡単にするためにJSON文字列として記述しました。オブジェクトの内容は意味がなく、MongoDbクエリ構文を示しているだけです。
MongoDbのようなクエリ式オブジェクト
検索する配列
Mongoのようなクエリ式を使用して検索
したがって、関数の助けを借りて、ターゲット配列に次のクエリを発行できるはずです。
Mongoのようなクエリ式を使用して配列パスを取得する
宿題
goingsner.net/articles/JsonPath/が私のニーズをカバーできる可能性があることがわかりました(Xpathのような式を使用しているため、完全に一致するわけではありません)。注意点は、正規表現と文字列の解析に大きく依存しているため、間違いなく遅くなります。配列のみ(JSONのような)の実装と比較してダウンしています。
また、ここで同様の質問を見つけました。@stackoverflowPHPで のMongoDBのようなJSONクエリの評価。結果として得られた答えは、ほとんどの場合回避するために使用されるいくつかのSPL関数を使用することでした。
作者が機能を思いついたのだろうか、彼は開発しようとしていた。可能性のあるarrayPath実装は、thereisamoduleforthat.com / content /dealing-deep-arrays-phpで見つかりました。したがって、この実装がないのは、ポインターに依存していることです。
私はそれがワンライナーの答えで些細な質問ではないことを知っています、それで私は自分のクラスの実際の開発を始める前にそれを尋ねている理由です。
アーキテクチャのヒント、関連または類似のコードに感謝します。これは、php"if..else"式をその場で構築するための良い実践例かもしれません。強調されたテキスト
非SPLバージョンを作成する方法は?
@Babaは、SPLを使用して作成された優れたクラスを提供しました。SPLなしでこのコードを書き直す方法はどうだろうか。
これには2つの理由があります
- クラスを複数回呼び出すと、関数のオーバーヘッドが発生します。これにより、生のPHPでクラスを書き直すことを回避できます。
- SPLが利用できない生のJavascriptに簡単に移植できるため、両方のプラットフォームでのコードのメンテナンスが容易になります。
結果
作成されたArrayQueryクラスはGithubで公開されています。リポジトリをチェックアウトして、更新を確認することを検討してください。
SPL、生のPHPバージョンおよびChequer2FORPプロファイラー出力
簡単に-
- 生のPHPバージョンはSPLバージョンよりも10倍高速に実行され、20%少ないメモリを消費します。
- Chequer2クラスのパフォーマンスはPHPSPLクラスより40%遅く、生のPHPバージョンよりもほぼ20倍遅くなります。
- MongoDbは最速です(生のPHP実装よりも10倍高速で、消費するメモリも5倍少なくなります)。MongoDbとの対話を避けたいことが確実でない限り、これらのクラスを使用しないでください。
MongoDbバージョン
SPLバージョン
生のPHP(最新のArrayQueryクラス)バージョン
Chequer2バージョン
MongoDbリファレンステストプロファイリングコード
SPLクラスプロファイリングコードを使用したPHP
SPLクラスの parse ()関数は、実行後に値を返すようにわずかに変更されています。式を受け入れるように変更することもできますが、式は毎回再評価されるため、プロファイリングの目的には必須ではありません。
生のPHP(最新のArrayQueryクラス)プロファイリングコード
chequer2PHPプロファイリングコード
使用されたデータ(彼の回答で提供された@babaと同じ)
forp-uiのわずかに変更されたサンプルUIローダー(?profile = FILE_TO_PROFILEで呼び出されます)
entity-framework - Linq には、f# スタイルのパイプライン処理用のヘルパー関数が含まれています
次のように、データベースからいくつかのレコードとそれらの関係を積極的にロードしたいと思います。
これはうまく機能しますが、クエリ式を括弧で囲んで include を呼び出せるようにする必要がありますが、これは少し奇妙に見えます。より慣用的な F# スタイルで Include を呼び出すヘルパー関数を作成できないかと考えた結果、これにたどり着きました。
これで、クエリは次のようになります (型推論はクエリ可能な型で機能します:D)
コンパイルされます!しかし、実行すると、DbExtensions ライブラリからエラーが表示されます。The Include path expression must refer to a navigation property defined on the type.
Queryable.Include に渡す前にラムダ関数を調べると、次のようになります{<StartupCode$Service>.$Worker.emails@30} Microsoft.FSharp.Core.FSharpFunc<Entities.Email,Entities.QueueItem> {<StartupCode$Service>.$Worker.emails@30}
。
FSharpFunc
問題は、ラムダがどのように解釈されているか、および s とs の間の変換に関係していると思いますExpression<Func<>>
。ヘルパー関数を書き直してExpression<Func<'a, 'b>>
、最初のパラメーターとして を持たせようとしました。さらに、FSharp.Core ソースをダウンロードして、Seq モジュールと QueryBuilder の実装のインスピレーションを探しましたが、何も機能しませんでした。私はヘルパー関数を次のように再定義しようとしました:
しかし、その後、コンパイラ エラーが発生しますThis function takes too many arguments, or is used in a context where a function is not expected
。
私は少し困惑しています。これを機能させる方法を誰かが提案できますか?
c# - モバイル サービス クエリの例外
ジェネリックでコードを使用する場合:
ここで TParent: IEnity
私は例外をキャッチします:
メンバー 'Id' は、'Where' Mobile Services クエリ式 'Convert(prnt).Id' ではサポートされていません。
しかし、ジェネリックを次のように変更すると、次のようになります。
私は正常な結果を持っています。なんで?そして、どのようにジェネリックを使用できますか?