2012-06-11 57 views
0

我掙扎着爬代碼適合我的以下要求跳過元素lstSnapshotExcludingCols即整數列表。要使用skipwhile

有人可以幫助我獲得預期的結果。我正在使用下面的代碼,但它會返回所有的數據列,並且不會跳過任何內容。

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)) 

回答

4

不要用戶SkipWhile(...)。一個簡單的Where(...)將這樣的伎倆:

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

非常感謝..它的工作對我.. BTY任何想法,爲什麼SkipWhile是我的方案最好,什麼是我的skipwhile代碼錯誤了嗎? – user899055

+0

我一直在使用LINQ超過3年,從未使用過'SkipWhile'方法。嘗試像政策的實施,這比實施的政策要遜色:告訴我你正在做的事情,而不是你正在做的事情。如果答案有效,請接受。 – bluevector

+0

我有類似的問題,而選擇它爲datarow。我編輯了我的問題。你能看看嗎? – user899055