我有一个ICollectionView从datagrid.它有4个字段名称,学校名称,性别,类.接口有一个搜索框,用户可以输入逗号分隔的值和ICollectionView将被过滤.
它是与单值工作,我怎么能这样做,以逗号分隔的列表工作。
List<string> NameList = filterText.Split(',').ToList();
List<string> SchoolNameList = filterText.Split(',').ToList();
List<string> GenderList = filterText.Split(',').ToList();
List<string> ClassList = filterText.Split(',').ToList();
字符串
下面是使用单个过滤器的代码
var query1 = new Predicate<object>(x => ((View)x).Name.ToLower().Contains(filterText));
var query2 = new Predicate<object>(x => ((View)x).SchoolName.ToLower().Contains(filterText));
var query3 = new Predicate<object>(x => ((View)x).Gender.ToLower().Contains(filterText));
var query4 = new Predicate<object>(x => ((View)x).Class.ToLower().Contains(filterText));
yourCostumFilter = new Predicate<object>(x =>
(query1(x) || query2(x) || query3(x) || query4(x) ));
view.Filter = yourCostumFilter;
型
它如何将工作与姓名列表,学校姓名列表,性别列表和类列表。请帮助。
1条答案
按热度按时间fhity93d1#
诀窍是在拆分搜索过滤器后得到的列表上使用Any(),并检查当前值是否在集合中。由于
filterText.Split(',')
将在所有4种情况下返回同一个集合,因此无需进行四次拆分。此外,您可以在任何类型的集合上使用Any,因此无需使用ToList()
。它的工作原理是这样的:
字符串