使用skipwhile跳过元素

时间:2012-06-11 18:56:53

标签: .net arrays linq

我正在努力使代码符合我的以下要求:

要求: 从数组中的数据表中获取datacolumns的名称除了在lstSnapshotExcludingCols中存在Ordinal的数据列,即整数列表。

有人可以帮助我获得预期的结果。我使用以下代码,但它返回所有数据列并且不会跳过任何内容。

Dim columnNames = ldtCurrentData.Columns.Cast(Of DataColumn)()
                  .SkipWhile(Function(column) 
                             lstSnapshotExcludingCols.Contains(column.Ordinal))
                  .Select(Function(column) column.ColumnName).ToArray()

从数据行中选择数据时我遇到了类似的问题:

Dim fields = row.ItemArray.SkipWhile(Function(value, index) lstSnapshotExcludingCols.Contains(index))

1 个答案:

答案 0 :(得分:4)

请勿使用SkipWhile(...)。一个简单的Where(...)就可以解决问题:

Dim columnNames = ldtCurrentData.Columns.Cast(Of DataColumn)()
                 .Where(Function(column) 
                    Not lstSnapshotExcludingCols.Contains(column.Ordinal))
                 .Select(Function(column) column.ColumnName).ToArray()