[英]Insert collection into list with nested array
我有這個收藏
db.UserWatchtbl.insert( {
fbId: "",
Name: "user1",
pass: "pass1",
Watchtbl:
[
{
wid: "1350",
name: "bought stock1",
Symboles: [ { Name: "AAA" }, { Name: "BSI" } ]
},
{
wid: "1350",
name: "bought stock2",
Symboles: [ { Name: "AAA" }, { Name: "BSI" }, { Name: "EXXI" } ]
}
]
} )
我嘗試將它插入到 C# 中的列表中,但我有一個嵌套數組 watchtbl 和符號。 我不知道如何將該元素放入列表或顯示它我試試這個代碼
private async void Master_BindData()
{
// add user into datagridview from MongoDB Colelction Watchtbl
var client = new MongoClient("mongodb://servername:27017");
var database = client.GetDatabase("WatchTblDB");
var collectionWatchtbl = database.GetCollection<BsonDocument>("UserWatchtbl");
var filter = new BsonDocument();
using (var cursor = await collectionWatchtbl.FindAsync(filter))
{
while (await cursor.MoveNextAsync())
{
var batch = cursor.Current;
foreach (var document in batch)
{
user.Add(new UserWatchTblCls()
{
Id = ObjectId.Parse(document["_id"].ToString()),
Name = document["Name"].ToString()
//WatchTbls = document["Watchtbl"].AsBsonArray;
});
}
}
}
}
和類 UserWatchTblCls()
public class UserWatchTblCls
{
[BsonId]
public ObjectId Id { get; set; }
public string fbId { get; set; }
public string Name { get; set; }
public string Pass { get; set; }
public List<WatchTblCls> WatchTbls { get; set; }
}
public class WatchTblCls
{
public string WID { get; set; }
public string Name { get; set; }
public List<SymboleCls> Symbols { get; set; }
}
public class SymboleCls
{
public string Name { get; set; }
}
您必須遍歷FindAsync
的Result
。 這會將數據收集到用戶中( List<UserWatchTblCls>
)
var user = new List<UserWatchTblCls>();
var cursor = collectionWatchtbl.FindAsync(filter).Result;
cursor.ForEachAsync(batch =>
{
user.Add(new UserWatchTblCls()
{
Id = ObjectId.Parse(batch["_id"].ToString()),
Name = batch["Name"].ToString()
});
});
編輯
哦。 所以你也在尋找深度反序列化。
public ReadFromDB()
{
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("test");
var collectionWatchtbl = database.GetCollection<BsonDocument>("UserWatchtbl");
var filter = new BsonDocument();
var user = new List<UserWatchTblCls>();
var cursor = collectionWatchtbl.FindAsync(filter).Result;
cursor.ForEachAsync(batch =>
{
user.Add(BsonSerializer.Deserialize<UserWatchTblCls>(batch));
});
}
public class UserWatchTblCls
{
[BsonId]
[BsonElement("_id")]
public ObjectId Id { get; set; }
public string fbId { get; set; }
public string Name { get; set; }
[BsonElement("pass")]
public string Pass { get; set; }
[BsonElement("Watchtbl")]
public List<WatchTblCls> WatchTbls { get; set; }
}
public class WatchTblCls
{
[BsonElement("wid")]
public string WID { get; set; }
[BsonElement("name")]
public string Name { get; set; }
[BsonElement("Symboles")]
public List<SymboleCls> Symbols { get; set; }
}
public class SymboleCls
{
public string Name { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.