A'在字符串位置6

本文关键字:字符串 位置 | 更新日期: 2023-09-27 18:06:18

是否可以使用DataView在DataTable中选择特定的列和列数据的字符串位置?

示例:columnA有一个字符串12345A789,我喜欢所有的数据在位置6= ' a '

DataView iDataView = new DataView(iDataTable, SELECT_Expression_string, ORDER_BY_Expression_string, DataViewRowState.CurrentRows);

什么将是SELECT_Expression_string获得列na与字符' A '在位置6的所有数据?

如果不可能;LINQ声明是什么?

谢谢你,符文

A'在字符串位置6

Try

var iData = iDataTable.AsEumberable().Where(f => f.columnA.Length > 5 && f.ColumnA[5] == 'A');

这将返回列na数据大于5且第6个字符为a的所有项,如果列na为空,它仍然可能失败。你也可以添加检查

看起来DataView.RowFilter不支持单个字符通配符。

你可以试试:

更新

你在@BugFinder回答中的评论表明你正在检查第7个字符,而不是第6个。

如果是第7个字符:

DataView dv = (from t in iDataTable.AsEnumerable()
               where Regex.IsMatch(t.Field<string>("columnA"), "''w{6}A''w*")
               select t).AsDataView();

如果是第六个:

DataView dv = (from t in iDataTable.AsEnumerable()
               where Regex.IsMatch(t.Field<string>("columnA"), "''w{5}A''w*")
               select t).AsDataView();
iDataView = (from t in iDataTable.AsEnumerable()
             where t.Field<string>("ColumnName").Length > 6 && t.Field<string>("TableName")[6] == 'A'
             select t).AsDataView();