2016-12-29 76 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) 

我张贴的答案,而不是关闭了一个问题,我没有看到这记录任何地方,它可以帮助别人的。