我有以下 MethodCallExpression:
{Party.Any(party => party.Address.Any(address => address.Line1.Contains("Address 1")))}
我需要将它附加到父级属性/参数,以便最终的 lambda 看起来像:
{txliferequest => txliferequest.OLifE.Party.Any(party => party.Address.Any(address => address.Line1.Contains("Address 1")))}
原始 MethodCallExpression 被传递到扩展方法中,因此我试图附加最终的 lambda 结构。
TXLifeRequest
public partial class TXLifeRequest : BaseEntity
{
public virtual OLifE OLifE { get; set; }
...
}
生活
public partial class OLifE : BaseEntity
{
public virtual List<Party> Party { get; set; }
...
}
聚会
public class Party: BaseEntity
{
public virtual List<Address> Address { get; set; }
...
}
我正在尝试将其附加为属性访问器,但不知道该怎么做。这是我正在尝试的:
//{Name = "OLifE" FullName = "IMSParamed.Entities.OLifE"}
Type parentBaseType = parentPropInfo.GetListBaseType();
//{IMSParamed.Entities.OLifE OLifE}
PropertyInfo propInfo = parentBaseType.GetParentMappedPropertyInfo();
//{OLifE}
ParameterExpression parentTypeParam2 = parentPropInfo.Name.ToParameter(parentBaseType);
//{OLifE.Party}
MemberExpression typeProp = type.Name.ToProperty(parentTypeParam2);
//Type lambdaType = typeof(Func<,>).MakeGenericType(type, typeof(bool));
MethodInfo anyMethod = ExpressionBuilder.anyTSource.MakeGenericMethod(type);
//{OLifE.Party.Any(party => party.Address.Any(address => address.Line1.Contains("Address 1")))}
MethodCallExpression any = Expression.Call(anyMethod, typeProp, methodCallExp);