-1

我有一个 MVC 模型,它返回一个包含单个项目的列表。在我看来,我必须参考这个项目。如您所见,有多种选择可供选择,例如

Model.Item.ElementAt(0)
Model.Item.LastorDefault()
Model.Item.Last()

谁能建议哪种方法在视图中更可取,为什么?

4

2 回答 2

2

这些只是做不同的事情:

ElementAt(0) // returns the item at index 0, throws an exception if the list is empty
Last() // returns the last item in the list, throws an exception if the list is empty
LastOrDefault() // returns the last item in the list, or the default value for the list element type if the list is empty

由于您断言您的列表中只有一项,因此我建议您使用 Model.Items.Single()。Single() 如果列表没有恰好一项,则抛出异常。

于 2013-06-30T19:47:50.187 回答
2

如果集合只有一项,则使用SingleOrDefault(). 如果您绝对确定会有一个项目,那么Single()也会这样做。使用Single而不是First可能会导致更多的处理时间(也可以忽略不计),但它使您的代码更能揭示意图、明确和故障安全。

var whatYouWant = Model.Item.Single();
// Will throw an exception if there is no item or more than one
于 2013-06-30T19:47:51.170 回答