Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用LINQ的Mongodb C#滤波器_C#_Mongodb_Linq_Filter - Fatal编程技术网

使用LINQ的Mongodb C#滤波器

使用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;

我必须根据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; 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指令或程序集引用?)