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

C# Mongodb C与某些记录的空字段集成,c#,mongodb,C#,Mongodb,这是我的json文件 {"_id":{"$oid":"569c6f31f633b10994233f16"},"Name":"jawad","Salary":"1000"} {"_id":{"$oid":"569c7044f633b126c825e880"},"Name":"noor","Salary":"1000"} {"_id":{"$oid":"569c97df47c0e25eb3af5928"},"Name":"jawad","Salary":5000.0} {"_id":{"$oi

这是我的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个电话字段,其余记录没有。如何查询scape null telephone I get error:

找不到匹配的创建者


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

您是否尝试在where子句中过滤空值。?感谢rummykhan,我需要将其绑定到gridview,需要在gridview中显示电话字段,并为没有电话的记录显示空值。如果我在where子句中添加此项,则不会显示没有电话的记录。其中x=>x.Name==txtName.Text&&x.Telephone.Count>0这能解决您的问题吗。。那么x.Telephone==null呢?这不会带来没有电话字段的字段名=jawad。我们可以使用或吗?
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();