簡體   English   中英

如何使用 LINQ 制作累積濾波器?

[英]How can I make a cumulative filter with LINQ?

這是我的方法,我只過濾一個,我需要它們是累積的

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;
        }

在這里你 go - 使用標志,所以你的枚舉可以保存多個值

[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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM