0

私はMongoDB C#ドライバーを使用しており、式によるフィルタリングとフィールド名によるソートを使用したいと考えています。それは私の実装です:

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

変数式は次のとおりです。

Expression<Func<OBJECT, bool>> expression

SortFieldName は「名前」などを含む文字列です。

結果が null であるため、このコマンドは機能しません。私は何を間違っていますか?

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 に答える