【问题标题】:How can I make a cumulative filter with LINQ?如何使用 LINQ 制作累积过滤器?
【发布时间】:2021-03-19 18:48:05
【问题描述】:

这是我的方法,我只过滤一个,我需要它们是累积的

private IQueryable<PublicationModel> FilterByTreatmentStatus(IQueryable<PublicationModel> selectedData, int? filterTreatmentOption)
        {
            if (filterTreatmentOption.HasValue)
            {
                switch (filterTreatmentOption)
                {
                    case (int)PublicationTreatStatus.NotTreated:
                        return selectedData.Where(x => x.PublicationStatus == 0);
                    case (int)PublicationTreatStatus.Treated:
                        return selectedData.Where(x => x.PublicationStatus == 1);
                    case (int)PublicationTreatStatus.TreatedWithoutProvidence:
                        return selectedData.Where(x => x.PublicationStatus == 2);
                    default:
                        return selectedData;
                }
            }

            return selectedData;
        }

【问题讨论】:

    标签: c# asp.net linq


    【解决方案1】:

    你去 - 使用标志,所以你的枚举可以保存多个值

    [Flags]
    public enum FilterTreatmentOption
    {
        NotTreated = 1,
        Treated = 2,
        TreatedWithoutProvidence = 4
    }
    
    
    private IQueryable<PublicationModel> FilterByTreatmentStatus(IQueryable<PublicationModel> selectedData, FilterTreatmentOption filterTreatmentOption)
    {
        if (filterTreatmentOption.HasFlag(PublicationTreatStatus.NotTreated))
            selectedData = selectedData.Where(x => x.PublicationStatus == 0);
        if (filterTreatmentOption.HasFlag(PublicationTreatStatus.Treated))
            selectedData = selectedData.Where(x => x.PublicationStatus == 1);
        if (filterTreatmentOption.HasFlag(PublicationTreatStatus.TreatedWithoutProvidence))
            selectedData = selectedData.Where(x => x.PublicationStatus == 2);
        return selectedData;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      相关资源
      最近更新 更多