我是一个较新的编码器,并且在使用表达式树动态创建以下 lamdba 表达式时遇到了很多问题。
( x, y ) => DateTime.Compare( y.EFFECTIVE_DATE, x.EFFECTIVE_DATE )
我刚刚开始了解表达式树的基础知识,但似乎还不足以创建它。我没有任何好的代码可以真正放在这里,因为老实说我真的在摸索这个。任何帮助都会很棒。
先感谢您。
抱歉,第一次发布并在格式化项目方面遇到了一些问题。
所以,在我的主要方法中,我有以下内容:
var sortExpression = testing.GetExpression("EFFECTIVE_DATE", "EFFECTIVE_DATE");
if (e.SortDirection == SortDirection.Ascending)
{
paymentAuthorizationList.Sort( sortExpression );
}
而且,在我的获取表达式方法中:
public Expression<Func<AuthorizePayments, AuthorizePayments, int >> GetExpression<t>( string propertyName, string propertyValue )
{
var paramX = Expression.Parameter( typeof( AuthorizePayments ), "x" ); // x
var paramY = Expression.Parameter( typeof( AuthorizePayments ), "y" ); // y
var xDate = Expression.Property( paramX, "EFFECTIVE_DATE" ); // x.EFFECTIVE_DATE
var yDate = Expression.Property( paramY, "EFFECTIVE_DATE" ); // y.EFFECTIVE_DATE
// DateTime.Compare(y.EFFECTIVE_DATE, x.EFFECTIVE_DATE)
var body = Expression.Call( typeof( DateTime ).GetMethod( "DateTime.Compare" ), yDate, xDate );
// (x, y) => DateTime.Compare(y.EFFECTIVE_DATE, x.EFFECTIVE_DATE)
var expr = Expression.Lambda<Func<AuthorizePayments, AuthorizePayments, int >>( body, paramX, paramY );
返回表达式;}
我知道此时变量是错误的。排序表达式不适用于排序方法。
我离我正在尝试做的事情还差得很远吗?
对不起我的无知,感谢您的帮助。