2011-05-04 63 views
1

我有一個MongoDB的集合稱爲某個鍵的所有值「員工」,其中有這樣的文件:的MongoDB/C#得到的所有文件

{ 
    "_id": "4dc077b07701540f34000001", 
    "FullName": "Fullname...", 
    "FirstName": "First name...", 
    "LastName": "Last name...", 
    "Title": "Title... ", 
    "Location": "Location...", 
    "Customer": "Customer...", 
    "Phone": "Phone...", 
    "CellPhone" : "Cellphone...", 
    "EMail": "E-mail..." 
} 

我試圖做,做一個foreach的方法循環集合中的所有文檔,並放入FullName鍵的每個值並將其添加到列表中。

 List<string> listed = new List<string>(); 
     IMongoCollection collection = _db.GetCollection("employees"); 
     //var list = collection.FindAll().Documents.ToList(); 
     var persons = from p in collection.AsQueryable() 
         select p["FullName"]; 
     //foreach (var lt in list) 
     foreach (var name in persons) 
     { 
      //listed.Add(lt["FullName"].ToString()); 
      listed.Add(name.ToString()); 
     } 
     return listed; 

以上是我已經嘗試了代碼,註釋的代碼返回一個NullReferenceException時,註釋掉的代碼在列表返回整個文檔。

我的問題是:我必須做什麼樣的查詢才能獲得名爲「FullName」的每個鍵的每個值到列表中?我在Windows 7上使用當前的MongoDB穩定版本,並使用MongoDB-CSharp社區驅動程序。所有的幫助和指針表示讚賞!

回答

3
var collection = _db.GetCollection("employees"); 
return (from p in collection.AsQueryable() 
     select p["FullName"]).toList(); 

應該這樣做嗎?

但是在看過你應該考慮使用泛型方法:

http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-GetCollectionmethod

+0

我可以返回的唯一途徑是,如果我這樣做: 公開名單方法名() 但我需要一個列表的值,而不是對象。 – bleakgadfly 2011-05-04 23:38:28

+0

(from p in collection.AsQueryable() select(String)p [「FullName」])。toList()這是否行得通? – 2011-05-05 07:43:36

+0

我得到這個異常:「無法轉換'MongoDB.Linq.MongoQuery'類型的對象來鍵入'System.Linq.IQueryable'1 [System.String]'。」通過使用這種返回方法:public List GetPersons() – bleakgadfly 2011-05-05 19:04:00

相關問題