编译器无法推导出表达式类型?

Ser*_*rge 1 .net c# linq

我有以下内容:

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表达式中有任何解决方法吗?

Hab*_*bib 7

只需使用显式强制转换即可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的博客类型推断问题,第一部分.