2017-10-07 7 views
0

3つの値に基づいてmongodbコレクションをフィルタリングする必要があります。私のクラス構造がLONGQを使用した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(); 

しかし、それはコンパイルされません。

オファーを支援してください、私はここにLINQの構文を使用することをお勧めしますMongoDBのコレクション

+0

コンパイラのエラーを表示できますか?この問題をよりよく説明できます。 –

+0

行クラスが配列であるため、フィルタの問合せに欠陥があります。c => c.root.row.MarketProfileID –

+0

正確なエラーを投稿してください。 – stybl

答えて

0

です。 これを試してください:

  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を持っていないので、それはとにかくコンパイルされないだろうが、私はあなたがアイデアを得たいと考えています。

関連する問題