簡體   English   中英

使用Linq搜索數據表到數據集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM