C# Mongodb C与某些记录的空字段集成
这是我的json文件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
{"_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();