假设我将此文档结构存储在MongoDB数据库中。
{
"_id" : ObjectId("54f131f3c4ca7b044eb11171"),
"services" : "gegsg",
"validCertificateOrLicense" : {
"title" : "asfasf",
"number" : "fasfsdf",
"dateIssued" : "fsdffsdfsdf",
"validUntil" : "fsdfsdfd",
"issuingAgency" : "fsdfsd"
}
}
我想在我的Binding中列出要在我的DataGrid上使用的那些字段,我试图使用在几个堆栈问题上发布的解决方案。但是没有一个工作,我试图使用Console.WriteLine(BindList.Count)来检查查询是否有效。
class facultyData
{
public ObjectId _id { get; set; }
public string services { get; set; }
public List<certification> validCertificateOrLicense { get; set; }
}
class certification
{
public string title { get; set; }
public string number { get; set; }
public string dateIssued { get; set; }
public string validUntil { get; set; }
public string issuingAgency { get; set; }
}
这是我尝试过的解决方案之一。
var query = collection.AsQueryable<facultyData>()
.Where(c => c.validCertificateOrLicense.Any(d => d.stores.Count() == 1);
或者我的ToList代码可能存在问题
List<facultyData> acadList = query1.ToList<facultyData>();
BindingList<facultyData> acadBinding = new BindingList<facultyData>(acadList);
答案 0 :(得分:0)
我认为这会起作用
var acadList = Database.GetCollection<facultyData>("facultyData").AsQueryable().Where(f => f.validCertificateOrLicense.Any()).ToList();
答案 1 :(得分:0)
您的班级facultyData
包含validCertificateOrLicense
字段中的认证列表。但是,数据库中的文档结构仅包含validCertificateOrLicense
字段中的单个证书。
如果您的数据库中的文档结构如下,那么您的查询应该可以正常工作
{
"_id" : ObjectId("54f131f3c4ca7b044eb11171"),
"services" : "gegsg",
"validCertificateOrLicense" : [{
"title" : "asfasf",
"number" : "fasfsdf",
"dateIssued" : "fsdffsdfsdf",
"validUntil" : "fsdfsdfd",
"issuingAgency" : "fsdfsd"
}]
}
注意 - validCertificateOrLicense
字段现在包含certification
子文档数组。
或者,您可以更改c#实体以匹配数据库中的现有文档结构。您的facultyData对象如下所示
class facultyData
{
public ObjectId _id { get; set; }
public string services { get; set; }
public certification validCertificateOrLicense { get; set; }
}
注意 - 现在validCertificateOrLicense
字段只包含一个certification
文档。