我有数据表,其中包含如下数据我现在需要根据包含值5:4的列Role来存档行但是当我通过dataview rowfilter过滤时,我得到的值为75:4的行也是错误的是我试过的代码,任何人都可以帮助我使用dataview过滤特定值
datatabl; e如上所述
以下是我试图过滤的c#代码
DataView dv1 = new DataView(dt);
dv1.RowFilter = "Role like'%5:4%'";
dt1 = dv1.ToTable();
答案 0 :(得分:2)
不要使用非常有限且过时的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();
如果你想用那些mathing行创建一个新的DataTable:
if( hasMatchingRows )
{
DataTable tblMatches = matchingRows.CopyToDataTable();
}
如果您只想知道matching.rows的初始列:
List<string> initials = matchingRows.Select(r => r.Field<string>("Initial")).ToList();
在此示例中仅包含NML
和GGRA
。
答案 1 :(得分:1)
替换
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