Asp.net mvc MVC 2-仅在每个循环中显示第一个结果
我有一个相当基本的循环:Asp.net mvc MVC 2-仅在每个循环中显示第一个结果,asp.net-mvc,model-view-controller,asp.net-mvc-2,viewmodel,Asp.net Mvc,Model View Controller,Asp.net Mvc 2,Viewmodel,我有一个相当基本的循环: <% foreach (var item in Model.Items.OrderByDescending(b => b.ItemDateTime)) {%> b.ItemDateTime)){%> 我不想在所有项目之间循环,而只是想输出第一个项目,我如何才能做到这一点?您可以使用集合的FirstODefault()方法。请尝试以下操作: // check if the model contains any item if (Model.Items
<% foreach (var item in Model.Items.OrderByDescending(b => b.ItemDateTime)) {%>
b.ItemDateTime)){%>
我不想在所有项目之间循环,而只是想输出第一个项目,我如何才能做到这一点?您可以使用集合的
FirstODefault()
方法。请尝试以下操作:
// check if the model contains any item
if (Model.Items.Count() > 0)
{
//show the item...
var firstItem = Model.Items.OrderByDescending(b => b.ItemDateTime).FirstOrDefault();
}
您可以使用集合的
FirstODefault()
方法。请尝试以下操作:
// check if the model contains any item
if (Model.Items.Count() > 0)
{
//show the item...
var firstItem = Model.Items.OrderByDescending(b => b.ItemDateTime).FirstOrDefault();
}
为了扩展Felipe的评论,更好的设计通常是将这样的东西放在视图模型或控制器中,而不是视图中 您可以将其放在viewmodel上
public Item EarliestItem
{
get { return Items.OrderByDescending(b => b.ItemDateTime).FirstOrDefault(); }
}
然后在你的视图中使用它
或者,不管你想对最早的项目做什么。为了扩展Felipe的评论,更好的设计通常是将这样的东西放在视图模型或控制器中,而不是视图中 您可以将其放在viewmodel上
public Item EarliestItem
{
get { return Items.OrderByDescending(b => b.ItemDateTime).FirstOrDefault(); }
}
然后在你的视图中使用它
或者不管您想对最早的项目做什么。Felipe Oriani的解决方案是可行的,但是,根据MVC设计原则,您应该在加载视图之前解决这个问题(即,在模型层的某个位置,但不一定在视图模型中,该视图模型应该包含大部分(如果不是全部)POCO)。智能视图是一种反模式。Felipe Oriani的解决方案是有效的,但是,根据MVC设计原则,您应该在加载视图之前解决此问题(即,在模型层的某个位置,但不一定在视图模型中,该视图模型应该包含大部分(如果不是全部)POCO)。智能视图是一种反模式。