这是我的代码:IQueryable<DAL.TradeCard> data = dc.TradeCard.Include("Address").Include("Vehicle");string orderNumber = "ORD_NR_2";Expression<Func<DAL.TradeCard, bool>> whereClause = a => a.orderNumber == orderNumber;// Expression<Func<DAL.TradeCard, bool>> whereClause = a => a.orderNumber == "ORD_NR_2";List<DAL.TradeCard> dataAsList = data.Where(whereClause).ToList();如果使用注释行,那么whereClause的值将如下所示: {a =>(a.orderNumber ==“ ORD_NR_2”)}如果我使用其他定义代替注释行,那么whereClause的值将如下所示: {a =>(a.orderNumber == 值(app_Employee.UI.UserFunctions.LejelentettTetelek + c__DisplayClass0).orderNumber)}这是一个问题,因为我想保存whereClause并在不存在orderNumber变量的其他地方使用它。因此,如何在Linq表达式中使用orderNumber变量的值而不是对其的引用。我想将“ value(app_Employee.UI.UserFunctions.LejelentettTetelek + c__DisplayClass0).orderNumber”设置为“ ORD_NR_2”。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 this blog post中的代码提供了一种方法,可以在可以完成的所有位置将表达式的所有部分评估为值。首先,它从下至上遍历表达式树,指示哪些对象没有像其子对象一样具有参数对象。然后,它从上到下遍历树,将所有表达式求值为其中没有参数的值。我们还可以为表示带有一个参数的Func的表达式创建一个额外的方法,这样您在调用它时就不需要进行强制转换:public static Expression<Func<TIn, TOut>> Simplify<TIn, TOut>( this Expression<Func<TIn, TOut>> expression){ return (Expression<Func<TIn, TOut>>)Evaluator.PartialEval(expression);}这使您可以编写:string orderNumber = "ORD_NR_2";Expression<Func<DAL.TradeCard, bool>> whereClause = a => a.orderNumber == orderNumber;string foo = whereClause.Simplify().ToString();//foo will be "{a => (a.orderNumber == "ORD_NR_2")}" (adsbygoogle = window.adsbygoogle || []).push({}); 10-08 04:58