我正在尝试修复我的数据以便能够正常显示。
一世
预期产出
Manager: Jane Lynch | Start Date: 01-01-2015 | End Date: 01-01-2020
-------------------------------------------------------------------
| Employee: James Pierce
| Employee: Jesse Mats
| Employee: Anna Boxes
Manager: Rob Riggle | Start Date: 05-10-2016 | End Date: 04-01-2022
-------------------------------------------------------------------
| Employee: Paul Rudd
| Employee: Mike Judge
当前数据输出
Manager: Jane Lynch | Start Date: | End Date:
-------------------------------------------------------------------
| Employee: James Pierce
| Employee: Jesse Mats
| Employee: Anna Boxes
Manager: Rob Riggle | Start Date: | End Date:
-------------------------------------------------------------------
| Employee: Paul Rudd
| Employee: Mike Judge
代码结构
Imports System
Imports System.Data.DataSetExtensions
Imports System.Data
Imports System.Collections.Generic
Imports System.Linq
Public Module Module1
Public Sub Main()
Dim employees As List(Of Employee) = New List(Of Employee)()
employees.Add(New Employee With {.ID = "1", .FullName = "Jane Lynch", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = ""})
employees.Add(New Employee With {.ID = "2", .FullName = "James Pierce", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Jane Lynch"})
employees.Add(New Employee With {.ID = "3", .FullName = "Jesse Mats", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Jane Lynch"})
employees.Add(New Employee With {.ID = "4", .FullName = "Anna Boxes", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Jane Lynch"})
employees.Add(New Employee With {.ID = "5", .FullName = "Rob Riggle", .StartDate = New DateTime(2016, 5, 10), .EndDate = New DateTime(2022, 4, 1), .Manager = ""})
employees.Add(New Employee With {.ID = "6", .FullName = "Paul Rudd", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Rob Riggle"})
employees.Add(New Employee With {.ID = "7", .FullName = "Mike Judge", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Rob Riggle"})
Dim groupedEmployees As List(Of EmpGroup) =(From emp As Employee In employees Group By manager = emp.Manager Into g = Group Select New EmpGroup With {.Manager = manager, .employees = g}).ToList
For Each emp In groupedEmployees
If emp.Manager <> "" Then
Console.WriteLine(emp.Manager)
Console.WriteLine("----------")
For Each s In emp.Employees
Console.WriteLine(" {0}", s.FullName)
Next
End If
Next
End Sub
Class Employee
Property ID As Integer = 0
Property FullName As String = String.Empty
Property StartDate As Date = Nothing
Property EndDate As Date = Nothing
Property Manager As String = String.Empty
End Class
Class EmpGroup
Property Manager As String
Property Employees As IEnumerable(Of Employee)
End Class
End Module
这是我目前所在的地方。我认为通过对它们进行分组,我可以使这更容易一些。
此外,行必须分组,因为我将它们添加到ul
,这就是我使用|
来帮助传达这是预期输出的原因。
提前感谢所有意见和建议。
试试这个:
Dim employees As List(Of Employee) = New List(Of Employee)()
employees.Add(New Employee With {.ID = 1, .FullName = "Jane Lynch", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = ""})
employees.Add(New Employee With {.ID = 2, .FullName = "James Pierce", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Jane Lynch"})
employees.Add(New Employee With {.ID = 3, .FullName = "Jesse Mats", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Jane Lynch"})
employees.Add(New Employee With {.ID = 4, .FullName = "Anna Boxes", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Jane Lynch"})
employees.Add(New Employee With {.ID = 5, .FullName = "Rob Riggle", .StartDate = New DateTime(2016, 5, 10), .EndDate = New DateTime(2022, 4, 1), .Manager = ""})
employees.Add(New Employee With {.ID = 6, .FullName = "Paul Rudd", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Rob Riggle"})
employees.Add(New Employee With {.ID = 7, .FullName = "Mike Judge", .StartDate = New DateTime(2015, 1, 1), .EndDate = New DateTime(2020, 1, 1), .Manager = "Rob Riggle"})
Dim lookup = employees.ToLookup(Function (e) e.Manager)
For Each manager In lookup("")
Dim line = String.Format("Manager: {0} | Start Date : {1:MM/dd/yyyy} | End Date : {2:MM/dd/yyyy}", manager.FullName, manager.StartDate, manager.EndDate)
Console.WriteLine(line)
Console.WriteLine("".PadRight(line.Length, "-"c))
For Each employee In lookup(manager.FullName)
Console.WriteLine(String.Format("| Employee: {0}", employee.FullName))
Next
Next
我明白了:
Manager: Jane Lynch | Start Date : 01/01/2015 | End Date : 01/01/2020 --------------------------------------------------------------------- | Employee: James Pierce | Employee: Jesse Mats | Employee: Anna Boxes Manager: Rob Riggle | Start Date : 05/10/2016 | End Date : 04/01/2022 --------------------------------------------------------------------- | Employee: Paul Rudd | Employee: Mike Judge