MongoDB .NET驱动程序:找不到AsQueryable()

时间:2015-09-29 09:40:16

标签: c# .net mongodb

我正在尝试向MongoDB写一个LINQ查询:

using MongoDB.Driver;
using MongoDB.Driver.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new MongoClient ("");
            var db = client.GetDatabase("");
            var coll = db.GetCollection<string>("");
            var x =
                from x in coll.AsQueryable()
                select x;
        }
    }
}

我遇到了这个错误:

  

错误CS1061:MongoDB.Driver.IMongoCollection<string>没有   包含AsQueryable的定义,没有扩展方法   AsQueryable接受第一个类型的参数   可以找到MongoDB.Driver.IMongoCollection<string>(是你吗?   缺少using指令或程序集引用?)

packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="MongoDB.Bson" version="2.0.1" targetFramework="net45" />
  <package id="MongoDB.Driver" version="2.0.1" targetFramework="net45" />
  <package id="MongoDB.Driver.Core" version="2.0.1" targetFramework="net45" />
</packages>

似乎方法就在那里:https://github.com/mongodb/mongo-csharp-driver/blob/81d9726449a8ff7baf254e92c17a231f40e21975/src/MongoDB.Driver/IMongoCollectionExtensions.cs#L51

3 个答案:

答案 0 :(得分:1)

API在2.x中发生了变化。它在1.x驱动程序(NuGet上的Legacy驱动程序)中可用。如果你想使用它,你会这样做:

var client = new MongoClient ();
var server = client.GetServer();
var db = server.GetDatabase("YourDb");
var coll = db.GetCollection<YourType>("YourCollection");

使用新的API我根本没有检查过Linq。我已经发现新的流畅API非常像Linq。

答案 1 :(得分:0)

2.0.1中不再支持此方法。要将此移动用于1.9.x。

答案 2 :(得分:0)

截至目前,LINQ支持不在2.x版本中。见this。官员说很快就会有LINQ支持。

由于新版本是完全异步的,因此他们必须从划痕中实现此功能。他们还将使用类映射LINQ此功能。

截至目前,如果您真的想要LINQ表达式,那么请使用Legacy类库,Cetin Basoz也说道。否则,您可以尝试this link来执行异步读取操作。希望这会有所帮助。