为我的网站编码一个统计页面。我正在使用带有实体框架的Linq。我有几个查询可以工作,但不能处理null异常。只是想知道是否有一种方法可以绕过它,而不必重新调整编码方法。
var countriesElse = db.Profiles
.GroupBy(av => av.Country)
.Select(g => new { Country = g.Key, Count = g.Count() });
var otherCount = countriesElse
.Where(x => x.Country != "US" && x.Country != "CA").FirstOrDefault();
ViewBag.otherCount = otherCount.Count;
这会抛出一个null错误,因为where子句没有任何可供选择的内容,但我将需要这个查询以备将来使用,因为它最终会被使用。
干杯
也许你想要这样的东西:
if(otherCount != null)
ViewBag.otherCount = otherCount.Count;
else ViewBag.otherCount = 0;
如果不尝试访问查询中null对象的属性或方法,则Select
或Where
不会抛出NullReferenceException
。你的问题是关于最后一行。
此外,您还可以使用带有谓词:的FirstOrDefault
简化代码
var profile = db.Profiles
.GroupBy(av => av.Country)
.Select(g => new { Country = g.Key, Count = g.Count() })
.FirstOrDefault(x => x.Country != "US" && x.Country != "CA");
ViewBag.otherCount = profile== null ? 0 : profile.Count;