繁体   English   中英

查询没有返回值的列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM