0

我正在使用 MongoDB C# 驱动程序并想使用按表达式过滤和按字段名排序。那是我的实现:

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

变量表达式为:

Expression<Func<OBJECT, bool>> expression

和 SortFieldName 是一个包含“名称”或其他内容的字符串。

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

4

1 回答 1

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();
于 2013-01-30T14:53:26.860 回答