![](/img/trans.png)
[英]C# Mongodb Deserialize List of BsonDocument types to List of Class Types
[英]How to convert List<BsonDocument> to List<Class> in C#
在這里我想做的是將Bson Document列表轉換為Class列表。 這樣做的主要目的是從Json數據列表中過濾數據。 我將MongoDb用於數據庫,將C#用於處理數據。 我已經在MongoDb中存儲了一些數據,並嘗試使用FilterDefinition
過濾數據,如下所示:
程序1
FileContext context = new FileContext();
var collection = context.Db.GetCollection<BsonDocument>("DBCollection");
var builder = Builders<BsonDocument>.Filter;
FilterDefinition<BsonDocument> Filter = builder.Eq("FileName", fileDetail.FileName) & builder.Eq("FileNumber", fileDetail.FileNumber.ToString());
var list = await collection.Find(Filter).ToListAsync();
這樣,我無法獲取列表中的數據。 因此,我嘗試了另一種這樣的方法:
程序2
FileContext context = new FileContext();
var collection = context.Db.GetCollection<BsonDocument>("DBCollection");
var list = await collection.Find(_ => true).ToListAsync();
List<MyClass> objList = null;
foreach (var item in objList)
{
objList = new List<MyClass>();
objList.Add(BsonSerializer.Deserialize<MyClass>(item));
}
if(objList.Count >0)
{
int count = objList.Where(x => x.FileName == "SOME_FILE_NAME" && x.FileNumber == 1).Count();
}
這樣,我既可以獲取數據,也可以過濾數據,但是我知道這根本不是一個好的編程方法,因為如果將來數據量增加,這將需要大量的waiting time
。
我的問題是:
PROCESS 1
什么問題? List<BsonDocument>
轉換為List<MyClass>
? List<BsonDocument>
? var collection = context.Db.GetCollection<BsonDocument>("DBCollection");
應該:
var collection = context.Db.GetCollection<MyClass>("DBCollection");
這樣,您應該能夠使用Find方法使用類似以下方法來檢查您的FileName和FileNumber:
var objList = await collection.Find(x => x.FileName == "FILENAMEHERE" && x.FileNumber == 1).ToListAsync();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.