2011-06-30 3 views
1

たとえば、文字列プロパティ "Document.DocumentType.DocumentCode"がDocumentCodeにnull値の10進数型であるとします。複数レベルの参照プロパティ(リンクされたプロパティ)の式ツリーを構築する方法は?

このための式ツリーを作成するにはどうすればいいですか:x.Document.DocumentType.DocumentCode.GetValueOrDefault() == 4

私の実際のケースでは、リンクされた文字列プロパティがどのように見えるか、またはプロパティのレベルを正確にはわかりません。

+0

を与えているのでメソッド呼び出しを追加します。実際の質問は何ですか? – ChrisBint

答えて

4

さて、その木がある:左側が複雑であり、右辺は定数式4

  • あるLHSは(上のメソッド呼び出しGetValueOrDefault()ある

    • 平等マッチ、発現)前のステップから
    • 式(式のプロパティアクセス式DocumentType(式)前のステップから
    • 発現のプロパティアクセス式DocumentCodeあります)
    • 前のステップからの発現は、下から​​

    スタートのプロパティアクセス式Documentあり、そしてそこからそれを構築します。言い換えれば、あなただけがプロパティを持っていることを知っているなら、あなたは望んでいるでしょう:

    • 文字列を "。"で分割します。
    • を作成する​​
    • プロパティのセットを丸め、毎回別のレイヤーまたはプロパティにアクセスします。

      currentExpression = Expression.Property(currentExpression, propertyName); 
      
    • 表現

    • それを使用して等価比較を構築し、私が理解するのは非常に簡単、これはいない書き換えを示唆している一定のどのような値あなたが
  • 関連する問題