[英]Filter collection via linq based on multiple criteria
I have collection that i want to filter based on multiple criteria
.我有我想根据multiple criteria
过滤的集合。
That's my filter class:那是我的过滤器类:
class CriteriaClass {
public DertEnum? DertEnum { get; set; }
public string UserName { get; set; }
CriteriaClass() {
DertEnum = null;
UserName = string.Empty;
}
}
My question is how to say here that if criteriaClass.DertEnum
is null not to include it in linq filter.我的问题是如何在这里说如果criteriaClass.DertEnum
为 null 则不将其包含在 linq 过滤器中。 Same for criteriaClass.UserName
if it's empty
.同为criteriaClass.UserName
如果它是empty
。 How to use to not go into if/else.
如何使用不进入if/else.
I am sure there is a way.我确定有办法。
_data = new ObservableCollection<MyModel>(_data.Where(w =>
(w.DertEnum.Equals(EnumTools.T(criteriaClass.WarehouseActionTypeEnum)))
&& (w.UserName.Equals(criteriaClass.UserName))));
To check if something is not null
, you can use is object
.要检查某些内容是否不为null
,您可以使用is object
。 To check if a string is null or empty, you can use String.IsNullOrEmpty()
:要检查字符串是 null 还是空,您可以使用String.IsNullOrEmpty()
:
_data = new ObservableCollection<MyModel>(_data.Where(w => w.DertEnum is object
&& !String.IsNullOrEmpty(w.UserName)
&& (<your other criterias go there>)))
Add a logical or is null check to the where criteria:向 where 条件添加逻辑或为空检查:
_data = new ObservableCollection<MyModel>(_data.Where(w =>
((w.DertEnum is null || w.DertEnum.Equals(EnumTools.T(criteriaClass.WarehouseActionTypeEnum))))
&& (w.UserName.Equals(criteriaClass.UserName))));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.