Группируйте различные записи в столбце
Всем Привет,
Можете ли вы помочь в том, как это сделать с помощью linq in vb.net-что?
Столбцы Datatable1 должны быть сгруппированы так же, как результат Datatable2.
Объект datatable1
ID# | НАЗВАНИЕ | ОТДЕЛ
E12345 | Joe | HR
E12345 | Joe | HR
E12345 | Joe | HR
T54333 | Фред | ИТ
T54333 | Фред | ИТ
I22544 | Кейт | ПТ
I22544 | Кейт | ПТ
Ожидаемый результат
Datatable2
ИД | НАЗВАНИЕ | ОТДЕЛ
E12345 | Joe | HR
T54333 | Фред | ИТ
I22544 | Кейт | ПТ
Что я уже пробовал:
Попробовал ниже код, но имя столбца, DEPT имеет результат системной ошибки.
Dim dt As DataTable = New DataTable() dt.Columns.AddRange(New DataColumn() _ { New DataColumn("ID#", Type.GetType("System.String")), New DataColumn("Name", Type.GetType("System.String")), New DataColumn("Dept", Type.GetType("System.String")) }) dt.Rows.Add(New Object() {"E12345", "Joe", "HR"}) dt.Rows.Add(New Object() {"E12345", "Joe", "HR"}) dt.Rows.Add(New Object() {"E12345", "Joe", "HR"}) dt.Rows.Add(New Object() {"T54333", "Fred", "IT"}) dt.Rows.Add(New Object() {"T54333", "Fred", "IT"}) dt.Rows.Add(New Object() {"I22544", "Kate", "AC"}) dt.Rows.Add(New Object() {"I22544", "Kate", "AC"}) Dim groupID = dt.AsEnumerable() _ .GroupBy(Function(x) x.Field(Of String)("ID#")) _ .Select(Function(grp) New With { .ID = grp.Key, .Name = grp.Select(Function(x) x.Field(Of String)("Name")), .Dept = grp.Select(Function(x) x.Field(Of String)("Dept")) }) _ .ToList() Dim dtF As DataTable = dt.Clone() For Each item In groupID Dim dr = dtF.NewRow() 'dr("ID#") = item.ID 'dr("Name") = item.Name dtF.Rows.Add(item.ID, item.Name, item.Dept) Next DataGridView1.DataSource = dtF