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

时间:2016-01-19 06:51:21

标签: c# mongodb

这是我的json文件。

WWW-Authenticate

C#代码

{"_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"}

Aspx文件

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; }

}

我有1个电话字段用于一条记录,但其余部分没有,我如何查询scape null电话我收到错误:

  

找不到匹配的创作者。

HTTP Authorization Manager

1 个答案:

答案 0 :(得分:0)

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();

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