首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果未找到匹配项,则FirstOrDefault返回NullReferenceException

如果未找到匹配项,则FirstOrDefault返回NullReferenceException
EN

Stack Overflow用户
提问于 2014-01-16 20:00:19
回答 7查看 122.3K关注 0票数 53

下面是我的代码:

代码语言:javascript
复制
string displayName = Dictionary.FirstOrDefault(x => x.Value.ID == long.Parse(options.ID)).Value.DisplayName;

如果x.Value.IDoptions.ID匹配,代码就能正常工作。但是,如果不是这样,我会得到一个NullReferenceException

EN

回答 7

Stack Overflow用户

发布于 2014-01-16 20:11:24

您可以使用其他LINQ方法的组合来处理不匹配条件:

代码语言:javascript
复制
var res = dictionary.Where(x => x.Value.ID == someID)
                    .Select(x => x.Value.DisplayName)
                    .DefaultIfEmpty("Unknown")
                    .First();
票数 17
EN

Stack Overflow用户

发布于 2014-01-16 20:04:50

这是因为FirstOrDefault可能返回null,导致下面的.Value导致异常。您需要将其更改为类似以下内容:

代码语言:javascript
复制
var myThing = things.FirstOrDefault(t => t.Id == idToFind);

if(myThing == null)
    return; // we failed to find what we wanted
var displayName = myThing.DisplayName;
票数 3
EN

Stack Overflow用户

发布于 2015-07-18 00:15:57

为了添加到解决方案中,这里有一个LINQ语句,它可能会有所帮助

代码语言:javascript
复制
Utilities.DIMENSION_MemTbl.Where(a => a.DIMENSION_ID == format.ContentBrief.DimensionID).Select(a=>a.DIMENSION1).DefaultIfEmpty("").FirstOrDefault();

如果查询结果为null,则结果为空字符串。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21161203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档