如何将 MOngoDB.BsonDocumnet 转换为 C# 中的集合列表?

发布于 2024-12-22 14:45:53 字数 487 浏览 6 评论 0原文

我有 MongoDB.BsonDocument,我想将该 BsonDocument 转换为集合列表,我该如何执行此操作,我将示例代码粘贴到下面...

try
{
    var server = MongoServer.Create("localhost:27017");
    var db = server.GetDatabase(DATABASE);
    var riskdata = db.GetCollection("TABLESAMPLE");
    var query = Query.EQ("Name", null);
    var results = riskdata.Find(query);
    gridsample.ItemsSource = results;
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

但上面的代码对我不起作用...“_id”仅绑定到网格,剩余的字段不会来。

I have MongoDB.BsonDocument, i want to convert that BsonDocument to List of collection, how can i do this one, i paste my sample code below...

try
{
    var server = MongoServer.Create("localhost:27017");
    var db = server.GetDatabase(DATABASE);
    var riskdata = db.GetCollection("TABLESAMPLE");
    var query = Query.EQ("Name", null);
    var results = riskdata.Find(query);
    gridsample.ItemsSource = results;
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

but above code not working for me...."_id" only binding to grid, remaining fields are not coming.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

囚你心 2024-12-29 14:45:53

您的网格可能不理解 BsonDocument

您需要查看将这些 BSON 文档序列化为类

它将看起来像这样:

class MyDocument { 
    public string name { get; set; }

    public int a { get; set; }

    public int b { get; set; }
}

然后您更改查找以返回这些内容

IEnumerable<MyDocument> results = riskdata.FindAs<MyDocument>(query).ToList();
gridsample.ItemsSource = results;

现在您将拥有一个具有网格可以读取的属性的类。

It is likely that your grid does not understand BsonDocument.

You need to take a look at serializing those BSON documents into classes.

It will look something like this:

class MyDocument { 
    public string name { get; set; }

    public int a { get; set; }

    public int b { get; set; }
}

Then you change your find to return these things

IEnumerable<MyDocument> results = riskdata.FindAs<MyDocument>(query).ToList();
gridsample.ItemsSource = results;

Now you will have a class with properties that your grid can read.

半寸时光 2024-12-29 14:45:53

您可以通过将 BsonBocument 转换为数据表而不声明类来将 BsonDocument 与任何结构绑定

    public DataTable GetDataTableFromMongoCursor(MongoCursor cursor)
    {
        if (cursor != null && cursor.Count() > 0)
        {

            DataTable dt = new DataTable(cursor.ToString());
            foreach (BsonDocument doc in cursor)
            {

                foreach (BsonElement elm in doc.Elements)
                {
                    if(!dt.Columns.Contains(elm.Name))
                    {
                        dt.Columns.Add(new DataColumn(elm.Name));
                    }

                }
                DataRow dr = dt.NewRow();
                foreach (BsonElement elm in doc.Elements)
                {
                    dr[elm.Name] = elm.Value;

                }
                dt.Rows.Add(dr);
            }
            return dt;

        }
         return null;
    }

you can bind BsonDocument with any structure by convert BsonBocument to Data table without declare class

    public DataTable GetDataTableFromMongoCursor(MongoCursor cursor)
    {
        if (cursor != null && cursor.Count() > 0)
        {

            DataTable dt = new DataTable(cursor.ToString());
            foreach (BsonDocument doc in cursor)
            {

                foreach (BsonElement elm in doc.Elements)
                {
                    if(!dt.Columns.Contains(elm.Name))
                    {
                        dt.Columns.Add(new DataColumn(elm.Name));
                    }

                }
                DataRow dr = dt.NewRow();
                foreach (BsonElement elm in doc.Elements)
                {
                    dr[elm.Name] = elm.Value;

                }
                dt.Rows.Add(dr);
            }
            return dt;

        }
         return null;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文