【发布时间】:2018-05-23 02:17:06
【问题描述】:
我需要知道如何将 int 转换为可为空的 int。但是,我不断收到错误消息“没有为类型‘System.Nullable`1[System.Int32]’和‘System.Int32’定义二元运算符 Equal。”任何解决方案。它需要是 Microsoft SQL Server 的可为空的 int 类型。
somevalue = Expression.Constant(something.GetValue(some,null).To<Nullable<System.Int32>> ());
public static T To<T>(this object obj)
{
Type t = typeof(T);
Type u = Nullable.GetUnderlyingType(t);
if (u != null)
{
if (obj == null)
return default(T);
return (T)Convert.ChangeType(obj, u);
}
else
{
return (T)Convert.ChangeType(obj, t);
}
}'
【问题讨论】:
-
something.GetValue的返回类型是什么?看起来你要为应该更简单的事情做很多工作...... -
错误是编译器错误还是运行时错误?我尝试使用各种输入来运行您的方法,但没有出现任何错误。如果您遇到运行时异常,请提供堆栈跟踪。
-
返回类型应该是 int?。问题是我通过了一个int?这是数据库中的一个值,然后该函数返回一个 int,然后我需要将其转换回一个 int?这样做的原因是因为我正在尝试进行动态查询。还有 somevalue 是一个 var!不是一个整数?并且必须始终是 var,这不能改变,所以我不能像人们建议的那样投射。