【发布时间】:2015-10-13 08:38:55
【问题描述】:
我下面的代码给了我一个NullReferenceException 并且堆栈跟踪告诉我问题出在Count 方法中,所以我很确定在某些时候foo、bar 或baz 是@ 987654326@.
我的代码:
IQueryable<IGrouping<string, Referral>> queryable= ...;
var dict = queryable.ToDictionary(g => g.Key.ToString(),
g => g.Count(r => r.foo.bar.baz.dummy == "Success"));
我想知道处理null 案件的简洁方法是什么。
我了解到在 C# 6.0 中我可以做 foo?.bar?.baz?.dummy,但是我正在从事的项目不是 C# 6.0
【问题讨论】:
-
你可以有一个
g.Count()的表达式主体,但是引入了空条件运算符,因为这样做的过程非常冗长。所以不幸的是,我认为你不会逃脱它 -
您使用的是哪个版本?或者您正在寻找任何 6.0 之前的解决方案?
-
这可能有点丑但是
g.Count(r => r.foo == null ? false : r.foo.bar == null ? false : r.foo.bar.baz == null ? false : r.foo.bar.baz.dummy == "Success")? -
您应该找出哪个为空以及为什么。不要只是隐藏问题。 “只是做......”这可能隐藏了一个真正的错误。
-
@usr AFAIK 没有
IQueryable<T>.ToDictionary,因此选择了IEnumerable<T>重载。
标签: c# entity-framework linq