2012-12-12 68 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(); 
相關問題