c# – 如果FirstOrDefault返回null,则从FirstOrDefault中选择一
发布时间:2020-12-15 03:58:02 所属栏目:百科 来源:网络整理
导读:我想发表以下声明: var block = blocksById.FirstOrDefault(X = X.Value == tracResult.ID).Key 我的问题是如果我有FirstOrDefault null值,如何更正确地处理它. 我只是不觉得如果声明是可以在这里的唯一解决方案… 解决方法 将它拆分为Where和Select: var
我想发表以下声明:
var block = blocksById.FirstOrDefault(X => X.Value == tracResult.ID).Key 我的问题是如果我有FirstOrDefault null值,如何更正确地处理它. 解决方法
将它拆分为Where和Select:
var block = blocksById.Where(x => x.Value == tracResult.ID) .Select(x => x.Key) .FirstOrDefault(); 这样,如果FirstOrDefault返回null,您将不会获得NullRefferenceException. 另外你可以给它一个默认值,如下所示: var block = blocksById.Where(x => x.Value == tracResult.ID) .Select(x => x.Key) .FirstOrDefault() ?? somedefaultvalue; 或者@Silvermind声明为非可空类型(int): var block = blocksById.Where(x => x.Value == tracResult.ID) .Select(x => (int?) x.Key) .FirstOrDefault() ?? somedefaultvalue; 更新:有些人似乎怀疑这是一个有效的用例,并认为必须在程序中稍后进行null检查. 虽然在很多情况下都是如此,但并不总是必须如此,或者如果是这样的话,这种方式可能会更方便. 一些例子: //one liner,null check delegated (not my favorite): return SomeCalculatedValue(collection.Where(condition).Select(selection).FirstOrDefault()); //or a mapping (shown with default value): var result = collection.Where(condition) .Select(c => { Foo = c.Foo,Bar = c.Bar }).FirstOrDefault()) ?? new { Foo = "New",Bar = "Empty"}; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |