2011-05-31 51 views
2

我檢查的一行代碼從我的項目如何從陣列

if ((test == 0) && 
    lenght.Matches(new Version(Convert.ToInt64(version)))) 

每當我調試我得到CURRENTVERSION爲18位數字的常數值得到最後的值,但我想要的結果是最後一個exisitng DATAS版本

我得到「length」作爲使用下面的代碼

length.Version = (long)data.Version.Rows[0]["Version"]; 

所以我懷疑它總是走行排列第一個值,如何我可以改變這個代碼,以便它會給陣列

回答

4

使用的最後一個值LINQ表達

currentVersion.Version = (long)m_spodata.DataVersion.Rows.Last()["Version"]; 

使用Rows.Count財產

currentVersion.Version = 
    (long) m_spodata.DataVersion.Rows[m_spodata.DataVersion.Rows.Count - 1]["Version"]; 
+0

您mising任一個'.Length'或一個'Count'或'Count()'取決於在你的第二個建議中'Rows'是一個數組,'ICollection'還是其他類型的'IEnumerable'。 – ChrisWue 2011-05-31 07:02:13

+0

更新後的代碼^) – VMAtm 2011-05-31 07:03:03

+0

我正在檢查哪個更加opotimized之一答案 – shanethomson11 2011-05-31 07:20:20

2

您是否在尋找

DataVersion.Rows[DataVersion.Count - 1]["Version"]; 
1
currentVersion.Version = 
    (long)m_spodata.DataVersion.Rows[m_spodata.DataVersion.Rows.Length-1]["Version"]; 
2

這返回從行最大版本:從陣列

m_spodata.DataVersion.Rows.Select(p => p["Version"]).Max(); 

這將返回最後一個元素(由指數):

m_spodata.DataVersion.Rows.Last()["Version"]; 
+0

我使用visual-studio 2005 – shanethomson11 2011-05-31 07:07:30