我使用System.Linq.Dynamic库DynamicQuery作为在.NET Framework 4.0上使用EF的解决方案的一部分,尝试将Nullable(int?)转换为Select中的String类似于:
query= "new(Convert.ToString(columnName) as stringColumn)";
IQueryable result = queryable.Select(query, parameters[]);
如何使Expression.Call工作并返回与Nullable列相当的字符串?
谢谢, 约翰
我尝试的事情:
System.ArgumentException:类型&System; System.Nullable 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.Call(表达式实例,MethodInfo方法,IEnumerable`1参数)
在System.Linq.Expressions.Expression.Call(表达式实例,MethodInfo方法,Expression []参数)
在C:\ Projects \ DynamicQuery.cs中的System.Linq.Dynamic.ExpressionParser.ParseMemberAccess(类型类型,表达式实例):第3461行
System.Linq.Dynamic.ParseException:类型' Int32的方法?'无法访问 在C:\ Projects \ DynamicQuery.cs中的System.Linq.Dynamic.ExpressionParser.ParseMemberAccess(类型类型,表达式实例):第3453行
答案 0 :(得分:0)
query = "new(Convert.ToString((int?)columnName))";
答案 1 :(得分:0)
尝试使用
query = "new(Convert.ToString(Int32(columnName)))"
或
query = "new((Int32(columnName)).ToString())"