2015-09-29 38 views
0

我想寫一個LINQ查詢的MongoDB:MongoDB的.NET驅動程序:AsQueryable已()沒有找到

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; 
     } 
    } 
} 

我面對這個錯誤:

error CS1061: MongoDB.Driver.IMongoCollection<string> does not contain a definition for AsQueryable and no extension method AsQueryable accepting a first argument of type MongoDB.Driver.IMongoCollection<string> could be found (are you missing a using directive or an assembly reference?)

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

回答

0

截至目前,LINQ支持不在版本2.x中。見this。官員們表示,很快就會有LINQ支持。

由於新版本是完全異步的,所以他們必須從劃痕中實現此功能。他們也將LINQ這個功能與班級地圖。

截至目前,如果你真的想要LINQ表達式,那麼就像Cetin Basoz所說的那樣,使用Legacy類庫。否則,您可以嘗試使用this link來執行異步讀取操作。希望這會有所幫助。

0

2.0.1中不再支持此方法。將此舉移至1.9.x.

+0

好的。那麼LINQ查詢不再被支持?有什麼選擇? –

0

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的。

相關問題