C# 林克托莫戈注射液

C# 林克托莫戈注射液,c#,.net,mongodb,mongodb-query,mongodb-.net-driver,C#,.net,Mongodb,Mongodb Query,Mongodb .net Driver,我有一个使用MongoDB的.NET应用程序,所以我使用的是MongoC#驱动程序 我目前使用的驱动程序版本是1.9.2,我的应用程序中的所有内容都按预期工作。不过,我正在尝试将Mongo驱动程序升级到最新版本2.7.0,但在某些方面我遇到了一些问题 下面的代码片段是我面临的最新版本驱动程序问题 public IQueryable<Location> SearchByLocationDistance(double latitude, double longitude, dou

我有一个使用MongoDB的.NET应用程序,所以我使用的是MongoC#驱动程序

我目前使用的驱动程序版本是1.9.2,我的应用程序中的所有内容都按预期工作。不过,我正在尝试将Mongo驱动程序升级到最新版本2.7.0,但在某些方面我遇到了一些问题

下面的代码片段是我面临的最新版本驱动程序问题

    public IQueryable<Location> SearchByLocationDistance(double latitude, double longitude, double rangeInKm)

    {        

        var rangeInMeters = rangeInKm * 1000;        

        var point = GeoJson.Point(GeoJson.Geographic(longitude, latitude));

        var locationClause = Query<Location>.Near(y => y.Address.GeoPoint, point, rangeInMeters);

        var query = collection.AsQueryable().Where(x => locationClause.Inject());



        return query;

    }
公共IQueryable SearchByLocationDistance(双纬度、双经度、双范围)
{        
var rangeInMeters=rangeInKm*1000;
var point=GeoJson.point(GeoJson.Geographic(经度、纬度));
var locationClause=Query.Near(y=>y.Address.GeoPoint,point,rangeInMeters);
var query=collection.AsQueryable().Where(x=>locationClause.Inject());
返回查询;
}
我收到的错误消息是:

Inject方法仅用于LINQ Where子句中

做了一些研究,看起来有一个修复程序

但是,我不确定是否需要使用新语法来实现相同的功能

我尝试按如下方式更改代码:

var filter = Builders<Location>.Filter.Near(y => y.Address.GeoPoint, point, rangeInMeters);

var query = collection.AsQueryable().Where(x => x.filter.Inject());
var filter=Builders.filter.Near(y=>y.Address.GeoPoint,point,ranginmeters);
var query=collection.AsQueryable().Where(x=>x.filter.Inject());

但是,使用该代码,我得到了一条不同的错误消息-$near不允许在$match聚合中使用

    public IQueryable<Location> SearchByLocationDistance(double latitude, double longitude, double rangeInKm)
    {         
        var rangeInMeters = rangeInKm * 1000;         
        var point = GeoJson.Point(GeoJson.Geographic(longitude, latitude)); //long, lat
        var filter = Builders<Location>.Filter.Near(y => y.Address.GeoPoint, point, rangeInMeters);

        return collection.Find(filter).ToList().AsQueryable();
    }
公共IQueryable SearchByLocationDistance(双纬度、双经度、双范围)
{         
var rangeInMeters=rangeInKm*1000;
var point=GeoJson.point(GeoJson.Geographic(经度、纬度));//长,纬度
var filter=Builders.filter.Near(y=>y.Address.GeoPoint,point,rangeInMeters);
返回集合.Find(filter.ToList().AsQueryable();
}