过滤视图中的列表

时间:2016-11-07 20:45:43

标签: c# asp.net-mvc list

我在视图中有一个简单的@foreach循环遍历列表:

@foreach (var record in Model.ChangeOrder.Change_Order_Dash_List)
{
    ....
}

效果很好!但是,根据模型中的布尔值,我可能需要过滤此列表。这个,我很难搞清楚。这就是我正在尝试的:

@{List<MCA.Models.ChangesVM.ChangeOrderInfo> Change_Order_Dash_List = new List<MCA.Models.ChangesVM.ChangeOrderInfo>();}

@if (Model.ViewChangeOrdersFromChart)
{
    Change_Order_Dash_List = Model.ChangeOrder.Change_Order_Dash_List.Where(l => l.Implement_Date == Model.ViewChangeOrdersOnDate).ToList<MCA.Models.ChangesVM.ChangeOrderInfo>();
}
else
{
   Change_Order_Dash_List = Model.ChangeOrder.Change_Order_Dash_List;
}


@foreach (var record in Change_Order_Dash_List )
{
    ....
}

但结果很奇怪。当我呈现页面时,列表看起来是空的。没有数据呈现在屏幕上。如果我在页面的任何地方设置断点,它就永远不会被击中。

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

实现此目的的另一种(和IMO更简单)语法是使用if运算符将Where条件合并到||中,如下所示:

yourList.Where(l => !Model.ViewChangeOrdersFromChart || 
                    l.Implement_Date == Model.ViewChangeOrdersOnDate)

仅当Model.ViewChangeOrdersFromCharttrue时才会过滤此列表。 这样你根本不需要if条件。

答案 1 :(得分:0)

嗯,无论出于什么奇怪的原因,这都行不通:

@if (Model.ViewChangeOrdersFromChart)

但这确实......

@if (Model.ViewChangeOrdersFromChart == true)