c# - 将 MongoDB 文档转换为对象的 c# 列表

标签 c# asp.net-mvc mongodb

我正在尝试编写一种方法,将所有 Book 文档从 MongoDB 返回到我的 mvc 应用程序。首先,我连接到数据库,检索集合并将该集合转换为 Json 文件。接下来,我使用序列化器创建了一个列表,其中指定了几个字段(名称、作者等),我尝试将其反序列化为列表,并使用 for 循环返回书籍列表。可悲的是,我在返回行中遇到错误(转换错误)。欢迎任何建议!

public List<Book> getAllBooks() 
    {
        var mongoClient = new MongoClient("mongodb://localhost");
        var database = mongoClient.GetDatabase("SearchForKnowledge");
        var coll = database.GetCollection<BsonDocument>("Book");
        coll.ToJson();

        List<Book> collection = new List<Book>();

        JavaScriptSerializer js = new JavaScriptSerializer();
        collection = (List<Book>)Newtonsoft.Json.JsonConvert.DeserializeObject(coll.ToString());

        for (int i = 0; i < collection.Count(); i++) 
        {
            return collection[i];
        }
    }

最佳答案

好吧,你应该尝试更简单的方法:

 // add this using first
 using MongoDB.Driver.Linq;

 var coll = database.GetCollection<Book>("Book").AsQueryable<Book>();

而且你可以做任何事情,例如:

var someBooks = coll.Where(b => b.Year == 2014).Skip(0).Take(10).ToArray();

PS:你需要看看这个教程:https://mongodb-documentation.readthedocs.org/en/latest/ecosystem/tutorial/use-linq-queries-with-csharp-driver.html

关于c# - 将 MongoDB 文档转换为对象的 c# 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36776926/

相关文章:

java - 如何正确分组 mongodb 结果以减少 java 中的数据集与 morphia 0.99

c# - 此上下文中不存在类实例(表单类的按钮)c#

.net - 在 IIS 服务器上的 PUT API 调用期间未触发 Application_BeginRequest

regex - 如何限制多行文本框只接受一个数字?

asp.net-mvc - Ajax.ActionLink 加载具有背景不透明度的图像定位

MongoDB:获取所有唯一标签列表的好方法是什么?

node.js - 如何访问 Mongoose 架构属性?

c# - SQL Server 日期时间舍入

c# - 将 Enum 指定为 uint 的原因是什么?

c# - 不支持直接绑定(bind)到存储查询(DbSet、DbQuery、DbSqlQuery)的数据