首页 > 解决方案 > 有没有办法在运行时更改字符串属性“包含”的值?

问题描述

我的 xamarin 移动应用程序中有三个过滤器(选择器)。每个过滤器包含 5 个选项:包含、不包含、开始于、结束于、等于。所以现在我想应用所有这些过滤器来过滤来自 a 的数据List<T>并将其显示在页面上。

这是我到目前为止写的代码。当所有这些过滤器都选择了相同的选项“包含”时,它可以正常工作。

var customer = customerSearchDataModels.Where(x => 
    (x.Number.Contains(NameNumberEntryText)) && 
    (x.Email.Contains(EmailEntryText)) && 
    (x.PrimaryPhone.Contains(PhoneEntryText));

标签: c#xamarinxamarin.forms

解决方案


您可以将查询拆分为多个部分,例如:

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-query。


推荐阅读