如何使用linq获取datarow数组引用数据表的字段值

时间:2013-10-24 09:28:21

标签: c# linq

我想使用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);
有人可以提供帮助吗?

1 个答案:

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