我有以下foreach语句,它返回我的数组中的所有值(customerConfigTypes)。 我只想返回特定值。
我要做的是,如果我的Array(customerConfigTypes)的值为“A”且我的模型(m.ConfigurationType)值为A,我只想返回该特定类型。
因此,没有看到包含在最佳背景下的含义......最好的方法是什么?
var customerConfigTypes = new
Models.ReportConfiguration.ReportConfigurationType[]
{
ReportConfigurationType.CustomerFlagReport,
ReportConfiguration.ReportConfigurationType.SalesReport,
};
@foreach (var vm in Model.Where(m =>customerConfigTypes.Contains(m.ConfigurationType) &&
m.ReportConfigurationId > 0 ))
{
<div class="title-card @if (!hasCreateReportPermission) {<text> disabled</text> }">
<a class="inner" href="@Url.Action("Index", "ReportsAngular", new { area = "Angular", ReportType="CustomerFlagReport", ConfigurationId=vm.ReportConfigurationId, CanConfigureReports = hasCreateReportPermission })#/">
<i class="fa fa-wrench"></i>
<h3 class="panel-title">@vm.ConfigurationName</h3>
<p>@vm.ConfigurationDescription</p>
</a>
</div>
这是我的模型布局
public class ReportConfigurationViewModel : IReportConfigurationViewModel, IXmlSerializable
{
public int? ReportConfigurationId { get; set; }
public string ConfigurationName { get; set; }
public string ConfigurationDescription { get; set; }
public bool IsTemplate { get; set; }
public ReportConfigurationType ConfigurationType { get; set; }
public String ReportTitle { get; set; }
public virtual IEnumerable<IFilterViewModel> Filters { get; set; }
public IEnumerable<IFilterViewModel> SelectedFilters { get; set; }
public IEnumerable<IReportingColumnViewModel> SelectedColumns { get; set; }
public IEnumerable<IReportSummaryColumnViewModel> SelectedReportSummaryColumns { get; set; }
public IEnumerable<IReportGroupingColumnViewModel> SelectedReportGroupingColumns { get; set; }
public IEnumerable<IReportSortingColumnViewModel> SelectedReportSortingColumns { get; set; }
public string ModeType { get; set; }
public bool SuppressReportSummaryTitles { get; set; }
public bool SuppressPageSummaryTitles { get; set; }
public bool SuppressGroupSummaryTitles { get; set; }
public System.Xml.Schema.XmlSchema GetSchema() { return null; }
答案 0 :(得分:1)
你反过来做了。您不必使用Where
。只需查看类型是否匹配,foreach (var vm in customerConfigTypes.Where(m => m == Model.ConfigurationType))
{
// do something
}
子句将返回集合。
List<T>
使用FIDDLE进行更新:
Here is a working Fiddle of your exact model
更新模型列表
您希望在模型中使用customerConfigurationTypes
。这将使您实现您想要的。这将允许您获取视图模型并使用提供给视图的public class TestVm
{
public ReportConfigurationType ConfigType { get; set; }
public string Name { get; set; }
}
public class ConfigurationViewModel
{
public List<TestVm> ReportConfigurations { get; set; }
}
列表交叉引用它们。
课程更新
var results = model.ReportConfigurations.Where(m => customerConfigTypes.Contains(m.ConfigType));
foreach (var result in results.Where(m => m.ReportConfigurationId > 0))
{
<p>@result.ConfigurationDescription</p>
}
代码更新
mysqli_query()