可以为空的对象必须具有值

时间:2013-04-14 21:51:55

标签: c#

当我试图在我的项目中添加数据时出现此错误。我指向此代码:

var currentuserid = WebSecurity.CurrentUserId;
var user = db.UserProfiles.SingleOrDefault(u => u.UserId == currentuserid);
List<Claim> claims = db.Claims.Include("Claim_Status").Include("Patient").Include("Hospital").ToList();
var userClaims = claims.Where(c => c.Hospitalid.Value == user.Hospitalid);
return View(userClaims.ToList());

怎样才能解决这个问题。

我正在使用Microsoft sql server 2008。

1 个答案:

答案 0 :(得分:1)

您的一个或多个HospitalId为空。您可以通过将Where子句更改为:

来解决此问题
var userClaims = claims.Where(c => c.Hospitalid == user.Hospitalid);

会过滤掉任何声明为HospitalId的声明。

请注意,您当前正在加载整个Claims表并在内存中过滤集合。您可能希望在数据库上执行过滤器,您可以使用:

List<Claim> claims = db.Claims.Include("Claim_Status").Include("Patient").Include("Hospital")
    .Where(c => c.HospitalId == user.Hospitalid)
    .ToList();