2017-10-07 95 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,所以它不會反正編譯,但我希望你有這個想法。