Asp.net MVC-其中查询多个网格
本文关键字:网格 查询 net MVC- Asp | 更新日期: 2023-09-27 18:20:13
更新2
感谢Thomas Boby和Sam C.,他们都有很好的答案和完美的解决方案!
我的问题是:我希望我的视图显示具有不同文本框的四个网格/列。例如,当我创建一个Post Message时,我会向它添加优先级1-5
现在,我只想foreach"Priority=X"所在的每一列,所以1显示在一列上,而优先级为2的Posts显示在另一列上。你明白了吗?或者我真的不善于解释这一点。
型号类别:
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提供一个不同的"SelectWhere"查询。
类似的东西???
@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>
}
}
使用System.Linq
类似于:
@foreach (var item in Model.Posts.Where(x => x.priority == Priority.First))
{
...
}
将循环遍历优先级为1的每个项目。