【问题标题】:How to convert List<BsonDocument> to List<Class> in C#如何在 C# 中将 List<BsonDocument> 转换为 List<Class>
【发布时间】:2017-10-16 10:48:03
【问题描述】:

这里我要做的是将 Bson 文档列表转换为类列表。这样做的主要目的是从 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&lt;BsonDocument&gt; 转换为List&lt;MyClass&gt;
  3. 如何过滤List&lt;BsonDocument&gt;

【问题讨论】:

    标签: c# mongodb list bson


    【解决方案1】:
    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多