简体   繁体   English

MongoDB c#驱动程序排序和表达式查询

[英]MongoDB c# Driver Sorting and Expression query

im using the MongoDB C# Driver and wanna use filtering by expression and Sorting by fieldname. 我使用的是MongoDB C#驱动程序,并且想使用按表达式进行过滤和按字段名进行排序。 Thats my implementation: 那就是我的实现:

List<OBJECT> result = collection.FindAll().SetSortOrder(SortFieldName).AsQueryable().Where(expression).ToList();

variable expression is: 变量表达式是:

Expression<Func<OBJECT, bool>> expression

and SortFieldName is a string which contains "Name" or something. 而SortFieldName是一个包含“名称”之类的字符串。

This command does'nt work, because the result is null. 该命令无效,因为结果为null。 What do I wrong? 我怎么了

You can't mix native MongoDB queries with LINQ queries. 您不能将本机MongoDB查询与LINQ查询混合使用。 You must write your query either entirely in one way or the other. 您必须完全以一种或另一种方式编写查询。 Here's some sample code showing both ways of writing the same query: 这是一些示例代码,显示了编写同一查询的两种方式:

collection.Insert(new C { Id = 1, X = 3 });
collection.Insert(new C { Id = 2, X = 2 });
collection.Insert(new C { Id = 3, X = 1 });

Console.WriteLine("Using MongoDB query:");
foreach (var document in collection.Find(Query.GT("X", 1)).SetSortOrder("X"))
{
    Console.WriteLine(document.X);
}
Console.WriteLine();

Console.WriteLine("Using LINQ:");
foreach (var document in collection.AsQueryable().Where(c => c.X > 1).OrderBy(c => c.X))
{
    Console.WriteLine(document.X);
}
Console.WriteLine();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM