我想使用linq从数据表中获取datarow数组,其数据表类型ColumnA不为null或取决于其长度> 0,因此我可以使用Indexof()方法获取行索引来处理其他内容。
ColumnA ColumnB ColumnC
A0 B0 C0
Null B1 C1
A2 B2 C2
Null B3 C3
我的Linq声明:
DataRow[] rows = myDataTable.Select("ColumnA is not null").Where(row=>row.Field<string>("ColumnA").Length>0);
有人可以提供帮助吗?
答案 0 :(得分:2)
使用AsEnumerable
,您必须添加System.Data.DatasetExtensions
引用和
import System.Data
将数据表转换为可枚举:
获取 INDEX:
int desiredIndex =
dt.AsEnumerable().ToList().
FindIndex(r => !string.IsNullOrEmpty(r.Field<string>("ColumnA")) &&
r.Field<string>("ColumnA").Length > 0);
获取匹配的行列表
List<DataRow> RowFilter =
dt2.AsEnumerable().ToList().Where
(r => !string.IsNullOrEmpty(r.Field<string>("ColumnA")) &&
r.Field<string>("ColumnA").Length > 0).ToList();
获取匹配行数组:
DataRow[] drArray = dt2.AsEnumerable().ToList().Where
(r => !string.IsNullOrEmpty(r.Field<string>("ColumnA")) &&
r.Field<string>("ColumnA").Length > 3).ToArray();