2017-10-07 58 views
0

我必须根据3个值过滤我的mongodb集合。 我的阶级结构是使用LINQ的Mongodb C#过滤器

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

    } 

我要申请在蒙戈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(); 

但它不编译。 请协助

提供的是一种MongoDB的集合

+0

你能显示编译器错误吗?以更好地说明问题。 –

+0

因为行类是一个数组,所以我的过滤器查询中存在一个缺陷c => c.root.row.MarketProfileID –

+0

请发布您正在获取的确切错误。 – stybl

回答

0

我推荐你使用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(); 

你行类没有PrivacyLevelID,所以它不会反正编译,但我希望你有这个想法。