【发布时间】:2013-06-17 15:17:06
【问题描述】:
目前..我的代码如下所示。
PhoneNumber = x.PhoneNumbers.FirstOrDefault() != null ? x.PhoneNumbers.FirstOrDefault().PhoneNumber : string.Empty,PhoneNumbers 是 ICollection<PhoneNumber>
这也在.Select()中,所以我不能真正在外面为它创建一个变量。
Resharper 抱怨 x.PhoneNumbers.FirstOrDefault() 可能为空,老实说,并不是因为我必须执行两次 FirstOrDefault 的想法而出售。
任何其他想法,我在想可能有另一种 Lambda 方法我可以做类似的事情。
【问题讨论】:
-
嗯,该代码的最大问题是您将序列迭代两次。如果它代表一个数据库查询(似乎是这种情况),那......非常糟糕。
-
我同意,这绝对不是最好的主意,因为这是我将数据库中的结果操作到模型中
-
由于这是来自数据库,最好简单地使用存储过程并将结果映射到复杂类型。在为报告/显示目的加入和聚合数据的情况下,我已经这样做了。
标签: c# linq lambda resharper ternary-operator