[英]Search datatable using Linq to dataset
我有一個用戶信息的數據表。 我正在嘗試執行可以使用姓氏,用戶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進行部分搜索。
修改條件以首先檢查空字符串(使用String.IsNullOrWhiteSpace
)然后應用您的過濾器,如:
var results = dtUsers.AsEnumerable()
.Where(r =>(!String.IsNullOrWhiteSpace(tbName.Text) && r.Field<String>("LASTNAME").Contains(tbName.Text.Trim())
|| (!String.IsNullOrWhiteSpace(tbUserID.Text) &&r.Field<String>("USERID").Contains(tbUserID.Text.Trim())
|| r.Field<String>("USERROLELIST").Contains(ddlRoles.SelectedItem.Text));
同樣,你可以用最后一個條件做到這一點,如:
(ddlRoles.SelectedItem != null &&
!String.IsNullOrWhiteSpace(ddlRoles.SelectedItem.Text) &&
r.Field<String>("USERROLELIST").Contains(ddlRoles.SelectedItem.Text)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.