Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MongoDB驱动程序强类型筛选器用法_C#_Mongodb_Mongodb .net Driver - Fatal编程技术网

C#MongoDB驱动程序强类型筛选器用法

C#MongoDB驱动程序强类型筛选器用法,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,文档告诉您如何定义过滤器,但不告诉您如何使用它 public class Widget : BsonDocument { [BsonElement("X")] public int X { get; set; } [BsonElement("Y")] public int Y { get; set; } } public MyItem Get() { MyItem retvalue = null; var builder = Builders

文档告诉您如何定义过滤器,但不告诉您如何使用它

public class Widget : BsonDocument
{
    [BsonElement("X")]
    public int X { get; set; }

    [BsonElement("Y")]
    public int Y { get; set; }
}

public MyItem Get()
{
    MyItem retvalue = null;

    var builder = Builders<BsonDocument>.Filter;
    var filter = builder.Eq("x", 10) & builder.Lt("y", 20);
    Console.WriteLine(_collection.Count(filter));

    var builder2 = Builders<Widget>.Filter;
    var filter2 = builder2.Eq(widget => widget.X, 10) & builder2.Lt(widget => widget.Y, 20);
    Console.WriteLine(_collection.Count(filter2));

    return retvalue;
}
公共类小部件:BsonDocument
{
[b单一元素(“X”)]
公共整数X{get;set;}
[b单一元素(“Y”)]
公共整数Y{get;set;}
}
公共MyItem Get()
{
MyItem retvalue=null;
var builder=Builders.Filter;
var filter=builder.Eq(“x”,10)和builder.Lt(“y”,20);
Console.WriteLine(_collection.Count(filter));
var builder2=Builders.Filter;
var filter2=builder2.Eq(widget=>widget.X,10)和builder2.Lt(widget=>widget.Y,20);
Console.WriteLine(_collection.Count(filter2));
返回值;
}
因此,第一个筛选器正在工作-但它不是强类型的

第二个过滤器不能这样使用。
编译器错误:无法从“MongoDB.Driver.FilterDefinition”转换为“MongoDB.Driver.FilterDefinition”

所以问题是-我如何使用它作为过滤器。显然,filter参数定义为FilterDefinition。从BsonDocument派生MyItem没有帮助。“
filter2.ToBsonDocument()
”已编译,但未生成正确的结果(筛选器不工作!)

有人能给我指出正确的方向吗?

还有一些地方我可以读到吗?

首先我建议使用as-queryable,这是一种操作查询的简便方法

  _result = _collection.AsQueryable().First(w => w.X == x && w.Y < y);
\u result=\u collection.AsQueryable()。首先(w=>w.X==X&&w.Y
或者使用表达式过滤器定义

_result = _collection
           .Find(new ExpressionFilterDefinition<Widget>
               (widget => widget.X == 10 && widget.Y < y))
           .First()
\u结果=\u集合
.Find(新表达式过滤器定义)
(widget=>widget.X==10&&widget.Y
完整版本


c#驱动程序参考

正在使用的驱动程序版本是什么?感谢您向我指出ExpressionFilterDefinition。这很有效。我也不确定我以前是否有_database.GetCollection**