2016-12-29 26 views
0

隨着MongoDB中的C#驅動程序,我們可以做到以下幾點: 如果你正在處理一個類型牛逼有現場_.id,你可以建立這樣的過濾器:MongoDB的C#過濾嘴包裝件

var F = Builders<T>.Filter.Eq(_ => _._id, Value); 

我需要一個函數選擇T的字段,如_ => _.id部分確實,作爲參數,將工作這樣的:

myfunc<T>(SOMETYPETHATSELECTSAFIELDOFT N, string V) 
{ 
    var F = Builders<T>.Filter.Eq(N, V); 
} 

我知道MongoDB支持按名稱傳遞字段,但在這種情況下,我不能使用它。

我正在看看Mongo的C#驅動程序,但我無法真正理解它是如何完成的。

+0

爲什麼你不想使用流利的inteface? mycollection.Find(x => x.MyProperty ==「MyValue」)你的用例是什麼?當然你可以建立一個表達式,通過名字獲得你的屬性,問題是,如果你真的需要它 - –

+0

你是否試圖在你的方法中放置一個cluase,你可能實現並且接口誰擁有屬性字符串_id。那麼每個傳遞給你方法的類T都需要有這些接口和字段_id? –

+0

@Maksim:我完全沒有想過流暢的界面,我會看看;這裏的用例是:1)人們應該直接使用字段名稱,由編譯器驗證,因爲我們在將該名稱輸入爲字符串時曾犯過錯誤; 2)有些調用實際上可能根本不會去mongo(而我需要找到我們需要處理的字段,作爲第二個問題) – Thomas

回答

0

我得到了它使用的工作:

myfunc(Expression<Func<T, string>> N, string V) 

我張貼的答案,而不是關閉了一個問題,我沒有看到這記錄任何地方,它可以幫助別人的。