有什么方法可以在运行时更改字符串属性“ Contains”的值吗?

时间:2019-07-05 09:53:00

标签: c# xamarin xamarin.forms

我的xamarin移动应用程序中有三个过滤器(选择器)。每个过滤器包含5个选项:“包含”,“不包含”,“开头为”,“结尾为”,“等于”。因此,现在我想应用所有这些过滤器来过滤List<T>中的数据并将其显示在页面上。

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

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

1 个答案:

答案 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查询。