簡體   English   中英

如何轉換清單 <BsonDocument> 列出 <Class> 在C#中

[英]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

我的問題是:

  1. PROCESS 1什么問題?
  2. 如何將List<BsonDocument>轉換為List<MyClass>
  3. 如何過濾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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM