1

WCF oData サービスを実装し、LINQPad から oData サービスを正常にクエリできます。私の oData サービス内で、メモリ常駐コレクションを論理的なビジネス順序に並べ替えており、生の html ブラウザー クエリを介して、予想される順序付けられたデータがネットワーク経由で送信されていることを確認しています。

ただし、LINQPad は、出荷されたオブジェクトの「ID」キーに基づいて、結果に独自のデフォルトの順序を課しているようです。

これは LINQPad で予期される動作ですか? デフォルトの ID ソートを無効にする設定プロパティを見逃していませんか?

編集:ラッセが示したように、クエリを含める必要がありましたが、ここにあります...

MyClass.Take (50)

そして、WCF サービスでは、必須のコレクション コードがここにあります...

var list = new System.Collections.Generic.List<MyClass>();

..    // collection population

return list.AsQueryable();

* アップデート *

ローカルの並べ替え動作は、ClassName.Dump(nn) LINQPad コマンドに固有です。

ClassName と ClassName.ToList() の両方で、oData サービスから出荷された注文の結果が表示されます。LINQPad をセミテクニカル ユーザー テスト集団に出荷して、金融モデリング アプリケーションで中間計算を照会できるようにすることを計画していたので、これはまだ私にとってはわずかな問題です。Dump() コマンドは、LINQPad が提案する最初の既定のクエリです。

4

2 に答える 2

2

SQL のように、別の方法で明示的に指定されていない限り、LINQ で順序の保持が課されることはめったにないことを忘れていると思います (ほとんどの場合、オブジェクトへの LINQ にあります)。

これに対処するために、特に(またはSQL で)操作を実行する必要がある場合は、常に順序を指定する必要があります。これにより、毎回結果が保証されます。Taketop n

それ以外の場合、それらは判別できません。

于 2011-01-13T13:54:09.607 に答える
1

デフォルトの順序は、データベースに物理的に挿入された順序に基づいていると思います。この場合、実際のアプリが常に論理ソートをデータ (またはこの場合は linqpad クエリ) に適用するようにします。

外部データが挿入されるまで正常に機能するlinqクエリがあったため、実務経験からこれを知っています。この外部データは直線的に挿入されましたが、実際には何年にもわたる日付参照がありました。したがって、linqを介して順次実行すると、セクションが欠落していました。日付でソートすると問題が解決しました。(これは数年前のことで、デフォルトの並べ替え順序について考えるようになったので) :)

ちょうど私のタペンス

于 2011-01-13T12:52:41.503 に答える