我有一个用户信息的数据表格。我正在尝试执行搜索,可以使用姓氏、用户ID或用户角色进行搜索。我有一个用于姓名和ID搜索的文本框,以及用于用户角色搜索的下拉菜单。不是所有的都可以留空,但任何组合都可以使用。我正在使用以下内容,但认为它不正确,因为它总是返回整个数据表:
dtUsers.CaseSensitive = false;
var results = dtUsers.AsEnumerable()
.Where(r => r.Field<String>("LASTNAME").Contains(tbName.Text.Trim())
|| r.Field<String>("USERID").Contains(tbUserID.Text.Trim())
|| r.Field<String>("USERROLELIST").Contains(ddlRoles.SelectedItem.Text));
dtUsers = results.CopyToDataTable();
我做错了什么?同时,我还需要能够对姓名和ID进行部分搜索。
IndexOf(tbName.Text, StringComparison.InvariantCultureIgnoreCast) > -1)
。参见:https://dev59.com/D3RB5IYBdhLWcg3w-8Lo - HabibCaseSensitive
属性而言,它将在您使用DataTable.Select
时使用(CaseSensitive
属性会影响排序、搜索和过滤中的字符串比较),但不会影响任何基于LINQ的查询。 - HabibContains
,而是使用Equals
,它 还有一种重载形式可以指定不区分大小写的比较。 - Habib