【问题标题】:To skip the elements using skipwhile使用 skipwhile 跳过元素
【发布时间】:2012-06-12 03:17:42
【问题描述】:

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

要求: 从数组中的数据表中获取数据列的名称 除了在 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))

【问题讨论】:

    标签: .net arrays linq


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢.. 它对我有用.. BTY 知道为什么在我的场景中建议使用 SkipWhile 以及我的 skipwhile 代码中的错误是什么?
    • 我使用 LINQ 已经 3 年多了,从未使用过 SkipWhile 方法。尝起来像是实施重于政策,不如政策重于实施:告诉我你在做什么,而不是如何你在做什么。如果答案有效,请接受。
    • 我在为数据行选择它时遇到了类似的问题。我已经编辑了我的问题。你能看看吗?
    • 我会教你钓鱼而不是给你一条鱼:将SkipWhile替换为Where并否定谓词。
    • 感谢您提供帮助,这是我第一次使用 LINQ 并且必须快速交付工作。这就是为什么我问,我仍然无法做到。不胜感激,如果您也能在这方面帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2014-07-09
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多