DataView选择表达式列,其中包含char' A'在字符串位置6

时间:2015-08-03 14:50:51

标签: c# linq select datatable dataview

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

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

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

SELECT_Expression_string用于获取columnA中的所有数据,其中第6位是char'A'吗?

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

谢谢你, 符文

3 个答案:

答案 0 :(得分:0)

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();

如果它是第6名:

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

答案 1 :(得分:0)

尝试

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

这将返回columnA数据长于5且第6个字符为A的所有项。如果columnA为null,则可能仍然失败。您也可以添加支票

答案 2 :(得分:0)

iDataView = (from t in iDataTable.AsEnumerable()
             where t.Field<string>("ColumnName").Length > 6 && t.Field<string>("TableName")[6] == 'A'
             select t).AsDataView();