8

子オブジェクトのプロパティを比較する式ツリーを作成するにはどうすればよいですか?

たとえば、オブジェクトの直接のプロパティを比較するラムダ式ツリーを既に作成できます。このような:

var propertyName = "JobNumber";
var propertyValue = "1005";
Type entityType = typeof(ParentObject);
OperatorDelegate comparisonMethod = Expression.Equal;

var parameter = Expression.Parameter(entityType, "entity");
var lambda =
    Expression.Lambda<Func<ParentObject, bool>>(
        comparisonMethod(Expression.Property(parameter, propertyName), Expression.Constant(propertyValue)),
        parameter);

これは(私が信じている)以下と同等です:

entity => entity.JobNumber == "1005";

私がハングアップしているのは、子オブジェクトのプロパティの値を比較する方法を見つけようとしているところです。たとえば、次のようになります。

public class ParentObject
{
    public ChildObject Child { get; set; }

    // more properties of ParentObject
}

public class ChildObject
{
    public string JobNumber { get; set; }
}

次と同等の式を作成するにはどうすればよいですか。

parentEntity => parentEntity.Child.JobNumber == "1005"

助けてくれてありがとう。

4

1 に答える 1