在 vb.net 中,使用 linq,加入 2 个对象列表。两个列表都是同一类型。
我搜索了按 ID 连接两个列表分组的最佳方法。像一个独特的。
样本 :
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
list3 在 concat 之后包含的内容:
[_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]
我们想要什么:
[_Id = 1] [_Value = 1]
[_Id = 2] [_Value = 2]
[_Id = 3] [_Value = 3]
[_Id = 4] [_Value = 4]
[_Id = 5] [_Value = 5]
[_Id = 6] [_Value = 6]