【问题标题】:Nullable object must have a value [duplicate]可空对象必须有一个值[重复]
【发布时间】:2013-04-14 21:51:54
【问题描述】:

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

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。

【问题讨论】:

  • 如何删除重复的可为空对象。

标签: c#


【解决方案1】:

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

var userClaims = claims.Where(c => c.Hospitalid == user.Hospitalid);

这将过滤掉任何带有 null HospitalId 的声明。

请注意,您当前正在加载整个 Claims 表并过滤内存中的集合。您可能想在数据库上执行过滤器,您可以这样做:

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

【讨论】:

  • lee,谢谢你,但我删除了value,但错误仍然存​​在。
  • @UmarBachena - 哪一行是例外?看起来Hospitalid 是您代码中唯一可能的可为空值。
  • 它在Line 37: var userClaims = claims.Where(c =&gt; c.Hospitalid == user.Hospitalid);
  • @UmarBachena - 它是同一个例外吗?还是user null?
  • Exception Details: System.InvalidOperationException: Nullable object must have a value.
猜你喜欢
  • 1970-01-01
  • 2010-12-26
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
相关资源
最近更新 更多