title: vb.net linq list of object
body: <p>In vb.net, using linq, join 2 list of object.
  Both list are the same type.</p>
  
  <p>I search the best way to concat both list grouping by Id.
  Like a Distinct.</p>
  
  <p>Sample : </p>
  
  <pre><code>Imports System.Text
  Imports System.Reflection
  
  Module Module1
  
      Sub Main()
          Dim list1 As New List(Of Item)
          For i As Integer = 1 To 4
              list1.Add(New Item(i, i.ToString))
          Next
  
          Dim list2 As New List(Of Item)
          For i As Integer = 3 To 6
              list2.Add(New Item(i, i.ToString))
          Next
  
          Dim list3 As New List(Of Item)
          list3 = (list1.Concat(list2)).ToList
          Console.WriteLine(Item.PrintList(list3).ToString)        
  
          Console.ReadLine()
      End Sub
  
  End Module
  
  Class Item
      Private _Id As Integer
      Private _Value As String
  
      Public Property Id() As Integer
          Get
              Return _Id
          End Get
          Set(ByVal value As Integer)
              _Id = value
          End Set
      End Property
      Public Property Value() As String
          Get
              Return _Value
          End Get
          Set(ByVal value As String)
              _Value = value
          End Set
      End Property
  
      Public Sub New()
      End Sub
      Public Sub New(ByVal id As Integer, ByVal value As String)
          Me.Id = id
          Me.Value = value
      End Sub
  
      Public Overrides Function ToString() As String
          Dim sb = New Text.StringBuilder()        
          For Each item In [GetType]().GetFields(BindingFlags.NonPublic Or BindingFlags.Instance)
              sb.Append(String.Format("[{0} = {1}] ", item.Name, item.GetValue(Me)))
          Next
          Return sb.ToString()
      End Function
  
      Public Shared Function PrintList(ByVal myList As List(Of Item)) As StringBuilder
          Dim result As New StringBuilder
          For Each i In myList
              result.AppendLine(i.ToString)
          Next
          Return result
      End Function
  
  End Class
  </code></pre>
  
  <p>What the list3 contain after concat : </p>
  
  <pre><code>[_Id = 1] [_Value = 1] 
  [_Id = 2] [_Value = 2] 
  [_Id = 3] [_Value = 3] 
  [_Id = 4] [_Value = 4] 
  [_Id = 3] [_Value = 3] 
  [_Id = 4] [_Value = 4] 
  [_Id = 5] [_Value = 5] 
  [_Id = 6] [_Value = 6] 
  </code></pre>
  
  <p>What we want : </p>
  
  <pre><code>[_Id = 1] [_Value = 1] 
  [_Id = 2] [_Value = 2] 
  [_Id = 3] [_Value = 3] 
  [_Id = 4] [_Value = 4] 
  [_Id = 5] [_Value = 5] 
  [_Id = 6] [_Value = 6] 
  </code></pre>