2012-12-12 71 views
0

即时通讯使用MongoDB C#驱动程序,并希望使用表达式过滤和字段名排序。 这就是我实现:MongoDB c#驱动程序排序和表达式查询

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

变量表达式是:

Expression<Func<OBJECT, bool>> expression 

和SortFieldName是包含 “名称” 或什么的字符串。

该命令不起作用,因为结果为空。我错了什么?

回答

0

您不能将本地MongoDB查询与LINQ查询混合使用。您必须完全以某种方式编写查询。下面是一些示例代码,显示了编写相同查询的两种方式:

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(); 
相关问题