Imports System.Collections.Generic
Imports System.Data.DataSetExtensions
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Comp", GetType(String))
dt.Columns.Add("Prod", GetType(String))
dt.Columns.Add("Status", GetType(Integer))
dt.Rows.Add("a1", "A", 1, 1)
dt.Rows.Add("a1", "B", 2, 2)
dt.Rows.Add("a2", "C", 3, 1)
Dim test = dt.AsEnumerable.GroupBy(Function(xSample) New With {Key .Name= xSample("Name"), Key .comp= xSample("Comp")}) _
.Select(Function(xGrouping) New With { _
.Name = xGrouping.Key.Name,
.Comp = xGrouping.Key.Comp,
.Prod1 = xGrouping.FirstOrDefault(Function(x) x("Prod") = 1), _
.Prod2 = xGrouping.FirstOrDefault(Function(x) x("Prod") = 2), _
.Prod3 = xGrouping.FirstOrDefault(Function(x) x("Prod") = 3) _
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write(test1.Name)
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write(test1.Comp)
Console.Write(Microsoft.VisualBasic.vbTab)
If (test1.Prod1 IsNot Nothing) Then
Console.Write(test1.Prod1("Status"))
Console.Write(Microsoft.VisualBasic.vbTab)
If (test1.Prod2 IsNot Nothing) Then
Console.Write(test1.Prod2("Status"))
Console.Write(Microsoft.VisualBasic.vbTab)
If (test1.Prod3 IsNot Nothing) Then
Console.Write(test1.Prod3("Status"))