2015-12-01 153 views
2

我有一个问题,我无法自行修复。在我的getAlldata()方法中,我需要返回我的集合kljenti中的所有数据。我不知道我需要在我的方法声明和返回语句中使用哪种数据类型。 我已经尝试了很多解决方案,但他们没有工作。返回声明

public void getAllData() { 
     try { 
      var connectionString = "mongodb://172.16.1.24:27017"; 
      var client = new MongoClient(connectionString); 
      var server = client.GetServer(); 
      var database = server.GetDatabase("kljenti"); 
      var Client = new MongoClient(); 
      var DB = Client.GetDatabase("knjigoMata"); 
      var kolekcija = DB.GetCollection<BsonDocument>("kljenti"); 
      var allDocuments = kolekcija.Find(new BsonDocument()).ToListAsync(); 

      foreach (var kljenti in allDocuments) { 
       Console.WriteLine(kljenti); 
      } 

      return allDocuments; 

     } catch { 
      MessageBox.Show("Nemogu prikazati podatke o korisnicima"); 
     } 
    } 
+0

我在这线上的错误:列表 allDocuments = kolekcija.Find(新BsonDocument())ToListAsync(); –

+0

和什么是错误? – DrewJordan

+0

不能隐藏类型BsonDocument到列表,暗示... –

回答

2

我建议将klijenti表反序列化为一个c#对象。 1.创建一个表示klijenti表的类。例如:

public class Klijent 
{ 
    public string Name {get;set;} 
    public string Address {get;set;} 
} 

2.然后使用

List<Klijent> res = db.FindAs<Klijent>.ToList(); 
  • List是为所请求的返回类型。
  • +0

    mongo不包含方法FindAs() –

    +0

    http://api.mongodb.org/csharp/1.8.3/html /49accca1-8e23-8942-488e-2eabbfefed12.htm – EylM

    +0

    我正在使用另一个驱动程序,mongo驱动程序2.0.2 c# –

    0

    ToListAsync()在这种情况下返回Task<List<BsonDocument>>。所以要完成这个工作,你必须等待任务完成,然后返回任务结果。

    例如:

    public List<BsonDocument> getAllData() 
    { 
        try 
        { 
         var connectionString = "mongodb://172.16.1.24:27017"; 
         var client = new MongoClient(connectionString); 
         var server = client.GetServer(); 
         var database = server.GetDatabase("kljenti"); 
         var Client = new MongoClient(); 
         var DB = Client.GetDatabase("knjigoMata"); 
         var kolekcija = DB.GetCollection<BsonDocument>("kljenti"); 
         Task<List<BsonDocument>> task = kolekcija.Find(new BsonDocument()).ToListAsync(); 
    
         task.Wait(); 
         List<BsonDocument> allDocuments = task.Result; 
         foreach (var kljenti in allDocuments) 
         { 
          Console.WriteLine(kljenti); 
         } 
         return allDocuments; 
        } 
        catch 
        { 
         MessageBox.Show("Nemogu prikazati podatke o korisnicima"); 
        } 
    }