Asp.net MVC - 查询多个网格

时间:2015-11-02 22:14:06

标签: c# asp.net asp.net-mvc where-clause

更新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提供不同的“选择位置”查询。

2 个答案:

答案 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的每个项目。