2016-04-15 91 views
0

您好我我的MongoDB驱动程序升级到2.2.3.3版本,我想使用运营商的SelectMany查询嵌套document.But当我尝试执行我查询我获得“查询的SelectMany运营商不支持错误”。这里是我的代码:MongoDB的C#驱动LINQ的SelectMany操作

MongoDatabase database; 
var client = new MongoClient("mongodb://myconnection"); 
var server = client.GetServer(); 
database = server.GetDatabase("MyDB"); 
MongoCollection<DGTable> collection; 
collection = database 
    .GetCollection<DGTable>(typeof(DGTable).Name); 

var result = collection.AsQueryable() 
    .SelectMany(p => p.TableColumns); 
var abc = result.ToList(); 
+1

如果错误是“不支持”,并没有告诉您什么问题是?你的问题是什么? –

+0

正如我所知道的最新版本2.2.3.3 mongodb c#驱动程序支持SelectMany能力,并且我想了解,SelectMany的错误用法或可能是我不得不使用SelectMany做不同的事情。 – Bilgehan

回答

1

可以推迟调用.SelectMany(...),直到你有数据之后。方法调用不会增加数据量或执行某些特定于数据库的性能操作,因此没有明确的理由在查询中调用它。

var result = collection.AsQueryable() 
    .Select(p => p.TableColumns) 
    .ToList(); 
var abc = result 
    .SelectMany(p => p) 
    .ToList(); 
0

我找到解决办法,我有一些obsolute方法和我升级我的代码,以新的方法,然后它工作

 var client = new MongoClient("mongodb://myconnection"); 

     var db = client.GetDatabase("mydb"); 
     var col = db.GetCollection<DGTable>("DGTable"); 

     var sadsdadas = col.AsQueryable().SelectMany(p => p.TableColumns).ToList();