无法比较两个Long列表以了解VB.NET中的差异

时间:2019-05-06 22:15:32

标签: vb.net

这似乎是一个非常基本的问题,但是即使在这里阅读了一些过去的问题,我仍然觉得自己无法解决问题。

我有两个long类型的列表,可以为它们添加数据。问题是我无法在第三个列表中进行比较。我尝试使用.Except(),但是当我尝试比较时,它似乎并不是一个属性(如VS上的intellisense所示)。我也尝试过使用Ienumberable(不确定100%会做什么,所以明天我会读一些书),但这似乎也不起作用。

我目前几乎有以下情况:

Dim a As New List(Of Long)
Dim b As New List(Of Long)

For Each aUnit As baseclass.childclass In baseclass
    a.Add(baseclass.unitNumber)
Next

For Each bUnit As baseclassTwo.childclass In baseclassTwo
    b.Add(baseclassTwo.unitNumber)
Next

'I get End of statement expected here
Dim C As New List(Of Long) = a.except(b)

2 个答案:

答案 0 :(得分:1)

Except()返回IEnumerable(Of T),而不是List(Of T)
另外,请确保位于顶部的Import System.Linq

Dim C As IEnumerable(Of Long) = a.Except(b)

Dim C As List(Of Long) = a.Except(b).ToList()

请记住:除非确实需要,否则请不要致电.ToList()。尽可能长时间使用IEnumerable,可以提高性能。

Dim a As IEnumerable(Of Long) = baseclass.Select(Function(x) x.unitNumber)
Dim b As IEnumerable(Of Long) = baseclassTwo.Select(Function(x) x.unitNumber)
Dim c As IEnumerable(Of Long) = a.Except(b)

答案 1 :(得分:0)

删除“新建”关键字或将您的声明与工作分配分开:

Dim C As List(Of Long) = a.except(b)

OR

Dim C As New List(Of Long)
C = a.except(b)