[英]Query a list where no values are returned
IEnumerable<ATable> stuff =
_aTableRepository.Entity.ByTitle(TITLE).ByDocTypeCode(Id).ToList();
上面的返回项列表
decimal? xyz = stuff.Where(x => x.CLAUSE == "test").FirstOrDefault().Id ?? 0;
现在,我想查询列表并获取ID(十进制类型)。 但是,没有子句等于“ test”,这行炸弹了。 好像什么也没找到,可为空的十进制将被设置为0。
您的查询的问题是,如果没有匹配的实体,则FirstOrDefault
将返回默认实体值。 我相信实体是您应用程序中的引用类型,因此您将null
作为默认值。 尝试获取null
Id
会给您NullReferenceException
。
将实体序列投影为ID序列,然后选择第一个或使用默认值:
decimal? xyz = stuff.Where(x => x.CLAUSE == "test")
.Select(x => x.Id).FirstOrDefault() ?? 0;
您还可以使用DefaultIfEmpty
提供默认值:
decimal? xyz = stuff.Where(x => x.CLAUSE == "test")
.Select(x => x.Id)
.DefaultIfEmpty(0).First();
和老派的方法-只需获取第一个匹配的实体并检查其是否不为null:
var testEntity = stuff.FirstOrDefault(x => x.CLAUSE == "test");
decimal? xyz = testEntity == null ? 0 : testEntity.Id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.