首页 > 解决方案 > 根据多个条件通过 linq 过滤集合

问题描述

我有我想基于的过滤集合multiple criteria

那是我的过滤器类:

class CriteriaClass {
    public DertEnum? DertEnum { get; set; }
    public string UserName { get; set; }
    
    CriteriaClass() {
        DertEnum = null;
        UserName = string.Empty;
    }
}

我的问题是如何在这里说 ifcriteriaClass.DertEnum 为 null 不将其包含在 linq 过滤器中。criteriaClass.UserName如果是的话也一样empty。如何使用不进入if/else.我相信有办法。

_data = new ObservableCollection<MyModel>(_data.Where(w =>
    (w.DertEnum.Equals(EnumTools.T(criteriaClass.WarehouseActionTypeEnum)))
    && (w.UserName.Equals(criteriaClass.UserName))));

标签: c#linq

解决方案


向 where 条件添加逻辑或为空检查:

_data = new ObservableCollection<MyModel>(_data.Where(w =>
    ((w.DertEnum is null || w.DertEnum.Equals(EnumTools.T(criteriaClass.WarehouseActionTypeEnum))))
    && (w.UserName.Equals(criteriaClass.UserName))));

推荐阅读