这似乎是一个非常基本的问题,但是即使在这里阅读了一些过去的问题,我仍然觉得自己无法解决问题。
我有两个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)
答案 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)