这是我的文件:
{
"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 :(得分:1)
你可以试试这个。
var messagess = GetDbMongo()
.GetCollection<Message>(DB_COLLECTION_MESSAGES)
.FindAll()
.Sort(sortt)
.ToList();
答案 1 :(得分:1)
不确定我是否错了,但你对“by linq”排序的想法是错误的。使用Linq进行排序是在内存中完成的。使用OrderBy
将导致整个集合被立即枚举,这是非常糟糕的。相反,使用Mongo为您进行排序。这将更快,您将使用服务器资源,而不是您的应用程序。但似乎你已经在使用.Sort on the Collection所以..不确定你真正想要的是什么。
但是,您可以通过执行以下操作重新编写代码以使用Mongo进行排序:
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();
如果您不熟悉Linq运营商如何处理“懒惰”,这是Jon Skeet的一篇好文章:Just how lazy are you?