我需要帮助手动创建这个lambda表达式。我无法正确创建MemberExpression
来隔离基础列表
的“breed
”属性。在本例中,breed
是dog
的属性。
这是我需要手动创建的lambda:
int maxlen = dogList.Select(d => d.Breed.Trim().Length).OrderByDescending(d1 => d1).First();
下面是我获取breed
属性的尝试:
ParameterExpression dogParam = Expression.Parameter(typeof(List<Dog>), "dog");
MemberExpression dogMember =
Expression.Field(dogParam, dogMember.Type.GetGenericTypeDefinition().GetProperty("Breed"));
我不确定您的问题到底出在哪里,但它已经帮助您找到了最可能需要的API:
可以使用expression.lambda
创建lambda表达式作为select
的参数。在lambda表达式中,您需要expression.MakeMemberAccess
来访问breed
属性。您将需要反射方法(例如Type.GetMember
)来获取相关的MemberInfo
对象。