xAttribute:何时使用显式转换?

时间:2017-07-06 08:27:03

标签: vb.net linq-to-xml

在我的项目中,我有一个名为nwCounter的xml元素,它包含许多名为Wire的元素,每个元素都有一个唯一的属性UId,它是一个整数。并非所有数字都被使用过。

当我使用linq-to-xml时,我可以通过两种方式搜索最高的UId数:

Dim test1 As Integer = nwCounter.Descendants(networkNameSpace + "Wire").Max(Function(x) Convert.ToInt32(x.Attribute("UId").Value))
Dim test2 As Integer = nwCounter.Descendants(networkNameSpace + "Wire").Max(Function(x) x.Attribute("UId").Value)

test的结果为124test2的结果为99。第一个是正确的。

所以我的问题是:我应该总是使用显式转换吗?或者什么时候可以使用隐式转换?

1 个答案:

答案 0 :(得分:1)

好的,这个问题并没有带来很多牵引力,但几周后,我突然意识到问题是什么:

Max函数始终搜索最高值,但不会获取有关类型的信息。默认情况下,它似乎假设类型是一个字符串。

如果按字母顺序排列所有属性,99会高于124。我之前没有看到这个的原因是因为我只使用了10到99之间的值,所以我没有遇到这个问题。