Длина диапазона - это верхнее значение минус нижнее значение.
Это очень похоже на что-то вроде:
for (var i = 1; i & lt; , [; D5] Также, как и диапазон Ruby:
] 1 ... 11 # это диапазон от 1 до 10
Однако Ruby признает, что много раз вы захотите включить значение терминала и предложить альтернативный синтаксис:
1..10 # это также диапазон от 1 до 10
Вы можете попробовать что-то вроде этого. (NOT TESTED) Просто использовал ваш c # LINQ для преобразования в VB
Dim test = customers.GroupBy(Function(xCustomer) xCustomer.CustId) _
.Select(Function(xCustomers)
New With {xCustomers.Key,
.Jan = xCustomers.Where(Function(y) y.OrderDate.Month = 1).Sum(Function(s) s.Qty),
.Feb = xCustomers.Where(Function(y) y.OrderDate.Month = 2).Sum(Function(s) s.Qty)})
EDIT Я добавил Feb в код. Надеюсь, поможет. Вы можете просто добавить такие свойства в анонимный тип.
EDIT
Я использовал простое приложение VB Console с данными, которые вы предоставили в своем сообщении, и работает абсолютно нормально , Вы можете попробовать это.
Sub Main()
Dim samples As New List(Of Sample)
samples.Add(New Sample() With {.Name = "a1", .Prod = 1, .Status = 1})
samples.Add(New Sample() With {.Name = "a1", .Prod = 2, .Status = 2})
samples.Add(New Sample() With {.Name = "a2", .Prod = 3, .Status = 1})
Dim test = samples.GroupBy(Function(xSample) xSample.Name) _
.Select(Function(xGrouping) New With { _
xGrouping.Key,
.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("Name")
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write("Prod1")
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write("Prod2")
Console.Write(Microsoft.VisualBasic.vbTab)
Console.Write("Prod3")
Console.Write(Microsoft.VisualBasic.vbTab)
Console.WriteLine()
For Each test1 In test
Console.Write(test1.Key)
Console.Write(Microsoft.VisualBasic.vbTab)
If (test1.Prod1 IsNot Nothing) Then
Console.Write(test1.Prod1.Status)
Else
Console.Write(0)
End If
Console.Write(Microsoft.VisualBasic.vbTab)
If (test1.Prod2 IsNot Nothing) Then
Console.Write(test1.Prod2.Status)
Else
Console.Write(0)
End If
Console.Write(Microsoft.VisualBasic.vbTab)
If (test1.Prod3 IsNot Nothing) Then
Console.Write(test1.Prod3.Status)
Else
Console.Write(0)
End If
Console.WriteLine()
Next
Console.ReadLine()
End Sub