更新2
感谢Thomas Boby和Sam C.两人都有很好的答案和完美的解决方案来解决这个问题!
这是我的问题:我希望我的视图显示四个带有不同文本框的网格/列。例如,当我创建发布消息时,我向其添加优先级1-5。
现在,我只是想要预先显示“Priority = X”的每一列,因此1列显示在一列上,而优先级为2的帖子显示在另一列上。你明白了吗?或者我真的很难解释这一点。
模特课:
public enum Priority
{
First = 1,
Second = 2,
Third = 3,
Forth = 4,
Fifth = 5,
}
public class Post
{
public int postId { get; set; }
public string postMsg { get; set; }
public Priority priority { get; set; }
}
在我看来,我想这样做:
@foreach (var item in Model.Posts) // Where Model.priority = 1
{
<div class="col-md-2">
<div class=" panel panel-default">
@Html.DisplayFor(modelItem => item.postMsg, new { @class = "panel-body" })
</div>
</div>
}
@foreach (var item in Model.Posts) // Where Model.priority = 2
{
<div class="col-md-2">
<div class=" panel panel-default">
@Html.DisplayFor(modelItem => item.postMsg, new { @class = "panel-body" })
</div>
</div>
}
事情是我不知道如何使“Where Model.priority = 1”查询。我不确定我是否可以在 foreach 中进行类似的查询?
更新
使事情变得更简单:我希望为不同的div提供不同的“选择位置”查询。
答案 0 :(得分:1)
这样的东西???
@foreach( var p in Enum.GetValues( typeof( Priority) ).Cast< Priority >().OrderBy(x=>(int)x) ) //sorted from first priority to fifth
{
@foreach (var item in Model.Posts.Where(x=>x.Priority == p))
{
<div class="col-md-2">
<div class=" panel panel-default">
@Html.DisplayFor(modelItem => item.postMsg, new { @class = "panel-body" })
</div>
</div>
}
}
答案 1 :(得分:0)
使用System.Linq
之类的内容:
@foreach (var item in Model.Posts.Where(x => x.priority == Priority.First))
{
...
}
将循环优先级为1的每个项目。