2015-12-01 186 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"); 
        } 
    }