Linq.Dynamic抛出异常,试图将nullable int转换为string

时间:2014-03-12 13:01:45

标签: c# .net linq entity-framework linq-to-entities

我使用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列相当的字符串?

谢谢, 约翰


我尝试的事情:

  1. 我尝试将Convert.ToString(columnName)作为查询的一部分发送:
  2. 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行

    1. 我尝试过使用(columnName).toString()并收到以下内容:
    2. System.Linq.Dynamic.ParseException:类型' Int32的方法?'无法访问    在C:\ Projects \ DynamicQuery.cs中的System.Linq.Dynamic.ExpressionParser.ParseMemberAccess(类型类型,表达式实例):第3453行

2 个答案:

答案 0 :(得分:0)

query = "new(Convert.ToString((int?)columnName))";

答案 1 :(得分:0)

尝试使用

query = "new(Convert.ToString(Int32(columnName)))"

query = "new((Int32(columnName)).ToString())"