我的xamarin移动应用程序中有三个过滤器(选择器)。每个过滤器包含5个选项:“包含”,“不包含”,“开头为”,“结尾为”,“等于”。因此,现在我想应用所有这些过滤器来过滤List<T>
中的数据并将其显示在页面上。
这是我到目前为止编写的代码。当所有这些过滤器都选择了“包含”的相同选项时,它会很好地工作。
var customer = customerSearchDataModels.Where(x =>
(x.Number.Contains(NameNumberEntryText)) &&
(x.Email.Contains(EmailEntryText)) &&
(x.PrimaryPhone.Contains(PhoneEntryText));
答案 0 :(得分:1)
您可以将查询分为多个部分,例如:
IEnumerable<Customer> query = customerSearchDataModels;
if(UseContainsName)
query = query
.Where(x => x.Number.Contains(NameNumberEntryText));
if(UseContainsPhone)
query = query
.Where(x => x.PrimaryPhone.Contains(PhoneEntryText));
var result = query.ToList();
您可以添加多个if语句,例如StartsWith等。此方法还可以用于更改升序/降序和/或不同的列名。
如果使用的是数据库连接,则应将IEnumerable替换为IQueryable,以便构建正确的sql查询。