【发布时间】:2015-01-12 15:42:31
【问题描述】:
我正在为数据库查询动态构建 Lambda 表达式(使用 LINQ)。我有一个用户提供的字符串(例如“80”),我需要将它与我的数据库实体对象(例如 Car.Mileage)中的字段进行比较。当我尝试构造一个比较表达式时,我得到一个类型错误。
Car.Mileage 声明如下:
public Nullable<int> Mileage
我正在以这种方式构建我的查询:
Nullable<int> userProvided = Int32.parse(arg);
Expression constant = Expression.Constant(userProvided);
Expression property = Expression.Property(car, "Mileage");
Expression exp = Expression.Equal(property, constant);
这会导致错误:
Expression.Equal 没有为类型定义 'System.Nullable`1[System.Int32]' 和 'System.Int32'。
我尝试了几种方法来转换用户的参数,但没有取得多大成功。
【问题讨论】:
-
有什么意义? Int32.Parse() 不会生成可空值。
-
@hans 它不会生成一个可为空的,但 Expression.Equal() 会抱怨如果一个参数可以为空而另一个不是。
标签: c# .net linq entity-framework