Linq:将ListA(Of String)与ListB(String)进行比较,并返回ListA中不在ListB中的项目

时间:2016-03-17 14:00:28

标签: vb.net linq

我有一份可用(开放)订单清单,以及已交货订单清单, 我想通过过滤" RemoveThis"中的那些来获得正确的可用订单列表。字符串列表

  Dim Available As New List(Of String)
  Available.Add("1")
  Available.Add("2")
  Available.Add("3")
  Available.Add("4")

  Dim RemoveThis As New List(Of String)
  RemoveThis.Add("2")
  RemoveThis.Add("3")

不起作用

  Dim x = From a In Available
          From b In RemoveThis
          Select a.Except(b)

2 个答案:

答案 0 :(得分:3)

以您的方式执行Linq查询会导致返回太多结果,因为两个集合的连接方式。你可以这样做:

Dim x = Available.Except(RemoveThis)

获取你想要的清单。

答案 1 :(得分:0)

奇怪......我正在使用List初始化程序并想出了这个:

    Dim Available As New List(Of String)(New String() {"1", "2", "3", "4"})
    Available.Add("1")
    Available.Add("2")
    Available.Add("3")
    Available.Add("4")

    Dim RemoveThis As New List(Of String)(New String() {"2", "3"})
    Dim l As List(Of String) = Available.Except(RemoveThis).ToList
    MsgBox(String.Join(", ", l))

我忘了删除.Add行,所以我最后列出了8个元素,两个1,2,3,4系列。奇怪的部分是列表l只有两个元素。我期待四个。

不是答案,只是观察。