1

我想使用 linq 从其字符串类型 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);

有人可以帮忙吗?

4

1 回答 1

3

使用AsEnumerable,您必须添加System.Data.DatasetExtensions引用和导入System.Data才能将数据表转换为可枚举:

获取索引:

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();
于 2013-10-24T09:37:31.503 回答