Mongodb C#与某些记录的空字段集成

本文关键字:字段 集成 记录 Mongodb | 更新日期: 2023-09-27 18:30:52

这是我的json文件。

{"_id":{"$oid":"569c6f31f633b10994233f16"},"Name":"jawad","Salary":"1000"}
{"_id":{"$oid":"569c7044f633b126c825e880"},"Name":"noor","Salary":"1000"}
{"_id":{"$oid":"569c97df47c0e25eb3af5928"},"Name":"jawad","Salary":5000.0}
{"_id":{"$oid":"569ca7a9f633b11ba42ffecc"},"Name":"mustaf","Salary":"9000","Telephone":["0700221569","0093799346211"]}
{"_id":{"$oid":"569cb94bf633b12e70eefa10"},"Name":"ramin","Salary":"14000"}
{"_id":{"$oid":"569cb98b617a84b98faf34ca"},"_Id":null,"Name":"ts","Salary":"4444"}
{"_id":{"$oid":"569cba2e617a84b98faf34cb"},"ID":null,"Name":"Dingo","Salary":"90004"}

C# 代码

protected void btnSearch_Click(object sender, EventArgs e)
{
    String ConnectionString = "mongodb://localhost:27017";
    MongoClient MC = new MongoClient(ConnectionString);
    var DB = MC.GetDatabase("test");
    var Col = DB.GetCollection<Result>("Product2");
    var filter=Builders<Result>.Filter.Eq("Name",txtName.Text);
    var Result = Col.Find(filter).SortByDescending(x=>x.Salary).ToList();
    var query = (from r in Col.AsQueryable<Result>().Where<Result>(x => x.Name == txtName.Text).SortBy<Result>("Salary")
                 select new
                  {
                      Id = r._Id,
                      Name = r.Name,
                      Salary = r.Salary,
                      Telephone=r.Telephone
                  }).ToList();
    // count of total records.
    int TotalElements = query.Count();
    lblTotal.Text = TotalElements.ToString();
    gvResult.DataSource = query;
    gvResult.DataBind();
}

public class Result
{
    [BsonId]
    public ObjectId _Id { get; set; }
    [BsonElement]
    public String Name { get; set; }
    public double Salary { get; set; }
    [BsonElement]
    public List<String> Telephone { get; set; }
}

Aspx 文件

<div class="Body">
        <table>
            <tr>
                <td>Name</td><td><asp:TextBox runat="server" ID="txtName" /></td>
            </tr>
            <tr>
                <td>Salary</td><td><asp:TextBox runat="server" ID="txtSalary" /></td>
            </tr>
            <tr>
                <td>
                    <asp:Label runat="server" ID="lblID"></asp:Label>
                </td>
                <td>
                    <asp:Button Text="Save" runat="server" ID="btnSave" OnClick="btnSave_Click" />
                    <asp:Button Text="Search" runat="server" ID="btnSearch" OnClick="btnSearch_Click" />
                </td>
            </tr>
        </table>

    <asp:GridView runat="server" ID="gvResult">
    </asp:GridView>
    <div class="CountDiv">
    <span>Total Elements:</span><asp:Label runat="server" ID="lblTotal"></asp:Label>
    </div>
</div>

有 1 个电话字段用于一条记录,但其余的没有,我如何查询以显示空电话,我收到错误:

找不到匹配的创建者。

在此处输入图像描述

Mongodb C#与某些记录的空字段集成

var query = (from r in Col.AsQueryable<Result>()
                       .Where<Result>(x => x.Name == txtName.Text && x.Telephone.Count > 0)
                       .SortBy<Result>("Salary")
                       select new
                       {
                          Id = r._Id,
                          Name = r.Name,
                          Salary = r.Salary,
                          Telephone=r.Telephone
                       }
             ).ToList();

很高兴它解决了您的问题。