使用LINQ的Mongodb C#滤波器
我必须根据3个值筛选我的mongodb集合。 我的班级结构是使用LINQ的Mongodb C#滤波器,c#,mongodb,linq,filter,C#,Mongodb,Linq,Filter,我必须根据3个值筛选我的mongodb集合。 我的班级结构是 public class Rootobject { public object _id { get; set; } //MongoDb uses this field as identity. public Root root { get; set; } } public class Root { public Row[] row { get;
public class Rootobject
{
public object _id { get; set; } //MongoDb uses this field as identity.
public Root root { get; set; }
}
public class Root
{
public Row[] row { get; set; }
}
public class Row
{
public string ID { get; set; }
public string MarketProfileID { get; set; }
public string CodeDetails { get; set; }
public string OfferTypeID { get; set; }
}
我必须在mongo db中应用过滤器:
var obj = Query.And(
Query<Rootobject>.EQ((c => c.root.row.MarketProfileID, marketProfileID.ToString())
Query<Rootobject>.EQ(c => c.root.row.CodeDetails, code),
Query<Rootobject>.EQ(c => c.root.row.PrivacyLevelID, customerTypeID.ToString())
);
List<Rootobject> obj = objDatabse.GetCollection<Rootobject>("Offer").Find(obj ).ToList();
var obj=Query.And(
EQ((c=>c.root.row.MarketProfileID,MarketProfileID.ToString())
EQ(c=>c.root.row.CodeDetails,code),
Query.EQ(c=>c.root.row.PrivacyLevelID,customerTypeID.ToString())
);
List obj=objDatabse.GetCollection(“Offer”).Find(obj.ToList();
但它不是编译。
请协助
Offer是mongodb集合我建议在这里使用LINQ语法。 请试试这个:
IMongoCollection<Rootobject> rootCollection = rootsDatabase.GetCollection<Rootobject>("Offer");
var roots = rootCollection.Find<Rootobject>(r => r.root.row.Any(
row => row.MarketProfileID == "somevalue" &&
row.CodeDetails == "somevalue")).ToList();
IMongoCollection rootCollection=rootsDatabase.GetCollection(“Offer”);
var root=rootCollection.Find(r=>r.root.row.Any(
row=>row.MarketProfileID==“somevalue”&&
row.CodeDetails==“somevalue”)).ToList();
您的row类没有PrivacyLevelID,因此无论如何它都不会编译,但我希望您能理解。我建议在这里使用LINQ语法。 请试试这个:
IMongoCollection<Rootobject> rootCollection = rootsDatabase.GetCollection<Rootobject>("Offer");
var roots = rootCollection.Find<Rootobject>(r => r.root.row.Any(
row => row.MarketProfileID == "somevalue" &&
row.CodeDetails == "somevalue")).ToList();
IMongoCollection rootCollection=rootsDatabase.GetCollection(“Offer”);
var root=rootCollection.Find(r=>r.root.row.Any(
row=>row.MarketProfileID==“somevalue”&&
row.CodeDetails==“somevalue”)).ToList();
您的row类没有PrivacyLevelID,因此它无论如何都不会编译,但我希望您能理解。您能显示编译器错误吗?为了更好地说明这个问题。由于row类是一个数组,因此我的筛选查询c=>c.root.row.MarketProfileIDPlease中存在一个缺陷。请发布您得到的确切错误。'row[]“”不包含“CodeDetails”的定义,并且找不到接受类型为“Row[]”的第一个参数的扩展方法“CodeDetails”(是否缺少using指令或程序集引用?)您可以显示编译器错误吗?为了更好地说明问题。由于row类是数组,因此我的筛选查询c=>c.root.row.MarketProfileIDPlease中存在一个缺陷。请发布您得到的确切错误。row[]不包含“CodeDetails”的定义,并且没有扩展方法“CodeDetails”接受“row[]类型的第一个参数'可以找到(是否缺少using指令或程序集引用?)