【发布时间】:2015-04-19 13:48:51
【问题描述】:
我在数据库中有一个可以为空的字段,在模型中有一个可以为空的参数。我尝试以下 LINQ to Entities 查询:
EditPersonViewModel model = (from i in db.Person
where i.PersonID == id.Value
select new EditPersonViewModel()
{
PersonID = i.PersonID,
Fullname = i.Fullname,
Comment = i.Comment,
Username = (i.UserId != null) ? i.AspNetUsers.UserName : String.Empty,
// this is parameter has type "int?"
PersonStatusID = (i.PersonStatus!=null) ? i.PersonStatus.PersonStatusID : null
}).FirstOrDefault();
我得到编译错误:
错误 1 无法确定条件表达式的类型,因为 'int' 和 '' 之间没有隐式转换
它可以很好地与
Username = (i.UserId != null) ? i.AspNetUsers.UserName : String.Empty,
但不适用于“int?”类型。为什么以及如何正确地做到这一点?
【问题讨论】:
-
这与 LINQ 无关。这是一个编译器错误。这里 90% 的代码不需要演示问题。
-
你不能
(int?)PersonStatusID = (i.PersonStatus!=null) ? i.PersonStatus.PersonStatusID : null吗? -
不能。而且 PersonStatusID 已经有类型“int?”