我有以下内容:
class MyClass {
public int? MyNullInt;
public string MyString;
};
Run Code Online (Sandbox Code Playgroud)
以及以下内容:
from it in items
select new MyClass {
MyString = it.AString,
MyNullInt = (it.B == null) ? null : it.B % 2
}
Run Code Online (Sandbox Code Playgroud)
正如我从MSDN中理解的那样,结构如下:
int? test = (true) ? null : 3;
Run Code Online (Sandbox Code Playgroud)
是非法的......,因为编译器不能推断出表达式类型(?! 是Nullable<int>,因为对我来说...)
那么,我的linq表达式中有任何解决方法吗?
只需使用显式强制转换即可int?:
MyNullInt = (it.B == null) ? (int?) null : it.B % 2
Run Code Online (Sandbox Code Playgroud)
要么
MyNullInt = (it.B == null) ? null : (int?) it.B % 2
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Eric Lippert的博客类型推断问题,第一部分.