2017-10-10 11 views
0

これが私のドキュメントです:のLINQ:ソートですべての文書を取得するにはMongoDB

{ 
"BusinessCode": "8545", 
"CreationDateTime": "/Date(1487417012464)/", 
"DeviceId": "", 
"Distributions": null, 
"EventData": [ 
     { 
     "Children": null, 
     "Key": "LogID", 
     "Value": "496a506b4301" 
     } 
], 
"EventId": "events.login", 
},... 

私は、LINQでソートして私のコレクションの中にすべての文書を得ることができる方法は?

これは私の以前のクエリです:

var messagess = GetDbMongo().GetCollection<Message>(DB_COLLECTION_MESSAGES) 
       .Find(Builders<Message>.Filter.And()).Sort(sortt).Limit(count <= 0 ? 10 : count).ToList(); 
+0

何を並べ替えますか?それはあなたの質問の最も重要な部分を欠いている.. – jpgrassi

答えて

1

私が間違っているが、「linq」による並べ替えのアイデアが間違っているかどうかはわかりません。 Linqを使用したソートはメモリ内で行われます。 OrderByを使用すると、コレクション全体が一度に列挙され、非常に悪いものになります。代わりに、Mongoを使用してソートを行います。これは速くなり、アプリケーションではなくサーバーリソースを使用します。しかし、それはあなたがすでにCollection上でソートを使用しているようです。あなたが本当に何を望んでいるのかわかりません。あなたは「怠惰」であるかどうかについて、LINQのオペレーターの仕事は、これは良いですがどのように精通していない場合

var collection = GetDbMongo().GetCollection<Message>(DB_COLLECTION_MESSAGES); 

// Empty filter to get all records 
var emptyFilter = Builders<Message>.Filter.Empty; 

// Choose which field of Message type you want to sort for 
var sort = Builders<Message>.Sort.Ascending(p => p.Name); 

var messagess = collection.Find(emptyFilter) 
    .Sort(sort) 
    .Limit(count <= 0 ? 10 : count) 
    .ToList(); 

:あなたはこれを行うことにより、モンゴを使用してソートするコードを書き直すことができ

しかし、 Jon Skeetのブログ投稿:Just how lazy are you?

1

あなたはこれを試すことができます。

var messagess = GetDbMongo() 
        .GetCollection<Message>(DB_COLLECTION_MESSAGES) 
        .FindAll() 
        .Sort(sortt) 
        .ToList(); 
関連する問題