我有一个 MVC 模型,它返回一个包含单个项目的列表。在我看来,我必须参考这个项目。如您所见,有多种选择可供选择,例如
Model.Item.ElementAt(0)
Model.Item.LastorDefault()
Model.Item.Last()
谁能建议哪种方法在视图中更可取,为什么?
我有一个 MVC 模型,它返回一个包含单个项目的列表。在我看来,我必须参考这个项目。如您所见,有多种选择可供选择,例如
Model.Item.ElementAt(0)
Model.Item.LastorDefault()
Model.Item.Last()
谁能建议哪种方法在视图中更可取,为什么?
这些只是做不同的事情:
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() 如果列表没有恰好一项,则抛出异常。
如果集合只有一项,则使用SingleOrDefault()
. 如果您绝对确定会有一个项目,那么Single()
也会这样做。使用Single
而不是First
可能会导致更多的处理时间(也可以忽略不计),但它使您的代码更能揭示意图、明确和故障安全。
var whatYouWant = Model.Item.Single();
// Will throw an exception if there is no item or more than one