2012-12-07 95 views
0

我有一個Column自定義類對象的列表。Enumerable.Max帶選擇器lambda函數

Column類有一個Position屬性。

列表中的每一列具有不同的位置(目前1,2,3,4)

我想找到throgh一個MaxPosition屬性的最右列:

Enumerable.Max(Of ExcelColumn)(Me.Columns, Function(c) c.Position) 

Me.Columns.Max(Function(c) c.Position) 

兩個總是返回0,不明白爲什麼。有任何想法嗎?

回答

1

例如:

Class Column 
    Public Property Position As Int32 
End Class 

Dim columns As New List(Of Column) From { 
    New Column With {.Position = 1}, New Column With {.Position = 2}, New Column With {.Position = 3}, New Column With {.Position = 4} 
} 
Dim maxColPos As Int32 = columns.Max(Function(c) c.Position) 

Console.Write(maxColPos) ' will output 4 

順便說一句,這將返回重複零並因此maxColPos=0

Dim columns As New List(Of Column) From { 
    New Column, New Column, New Column, New Column 
} 

becaue 0是default value用於未初始化Int32字段。

+0

暗示「Dim maxCol As Int32」。對於某些未公開的原因,它總是返回0.我在運行時檢查了'position' * s *,它們是正確的。 – Teejay

+0

@Teejay:如果它沒有被初始化,它將返回0,因爲這是默認值。如果我將省略上面的{{Position = 1}'部分,我也會得到重複的零。 –

+0

我笨蛋!在'GET'聲明忘了'Return': '公共只讀屬性RightMostCol作爲的Int32 獲取 Me.Columns.Max(功能(C)c.Position) 最終獲取 結束Property' – Teejay