簡體   English   中英

在ASP.NET C中使用Windcard的Datatable -Row過濾器

[英]Datatable -Row Filter using Windcard in asp.net c#

我有具有以下數據的數據表,現在我需要根據包含值5:4的角色列對行進行過濾,但是當我通過dataview rowfilter進行過濾時,我得到的值是75:4的行也是錯誤的,下面是代碼我試過了,有人可以幫我使用dataview過濾特定值

在此處輸入圖片說明

datatabl; e看起來像上面

以下是我嘗試過濾的C#代碼

DataView dv1 = new DataView(dt);
                dv1.RowFilter = "Role like'%5:4%'";
                dt1 = dv1.ToTable();

不要使用非常有限且過時的RowFilter ,但不要使用Linq-To-DataTable:

var matchingRows = from row in dt.AsEnumerable()
                   let roles = row.Field<string>("Role").Split('/')
                   where roles.Contains("5:4") 
                   select row;

此方法首先用/分割字符串,然后使用Contains在此數組中搜索。

如果您需要知道是否存在匹配的行:

bool hasMatchingRows = matchingRows.Any();

如果要使用這些數學行創建一個新的DataTable:

if( hasMatchingRows )
{
    DataTable tblMatches = matchingRows.CopyToDataTable();
}

如果您只想知道match.rows的初始列:

List<string> initials = matchingRows.Select(r => r.Field<string>("Initial")).ToList();

在此示例中僅包含NMLGGRA

更換

dv1.RowFilter = "Role like'%5:4%'";

dv1.RowFilter = "Role like '5:4/%' OR Role like '%/5:4' OR Role = '5:4' OR Role like '%/5:4/%'";
//                             ^                   ^                ^                    ^
//                        startswith            endswith         equals              contains

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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