我正在使用System.Linq.Dynamic库DynamicQuery作为解决方案的一部分,在。net Framework 4.0上使用EF来尝试将可空值(int?)转换为字符串,类似于:
query= "new(Convert.ToString(columnName) as stringColumn)";
IQueryable result = queryable.Select(query, parameters[]);
我如何得到表达式。调用工作,并返回一个空列的字符串等效?
谢谢,约翰。
我尝试过的事情:
- 我已经尝试发送转换。tostring (columnName)作为查询的一部分:
系统。ArgumentException:系统类型的表达式。可空的1[System.Int32]' cannot be used for parameter of type 'System.Object' of method 'System.String ToString(System.Object)'
at System.Linq.Expressions.Expression.ValidateOneArgument(MethodBase method, ExpressionType nodeKind, Expression arg, ParameterInfo pi)
at System.Linq.Expressions.Expression.ValidateArgumentTypes(MethodBase method, ExpressionType nodeKind, ReadOnlyCollection
1&参数)在System.Linq.Expressions.Expression。调用(表达式实例,MethodInfo方法,IEnumerable ' 1个参数)在System.Linq.Expressions.Expression。调用(表达式实例,MethodInfo方法,表达式[]参数)在System.Linq.Dynamic.ExpressionParser。ParseMemberAccess(类型类型,表达式实例)在c:ProjectsDynamicQuery.cs:line 3461
- 我已经尝试使用(columnName).toString()并接收以下内容:
System.Linq.Dynamic。ParseException: Int32类型的方法?'是不可访问的在System.Linq.Dynamic.ExpressionParser。ParseMemberAccess(类型类型,表达式实例)在c:ProjectsDynamicQuery.cs:line 3453
query = "new(Convert.ToString((int?)columnName))";
尝试使用
query = "new(Convert.ToString(Int32(columnName)))"
或
query = "new((Int32(columnName)).ToString())"