2011-05-31 34 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