Как преобразовать LINQ с Group By из C # в VB.NET? - PullRequest
3 голосов
/ 08 января 2012

Я пытаюсь преобразовать следующий код LINQ из C # в VB.NET.Вот C #, за которым последовала моя попытка VB.В VB я хотел бы объявить rowList как IEnumerable(Of IGrouping(Of Char, String)), но он возвращает IEnumerable(Of IEnumerable(Of Char, String)).

string rows = "ABC";
string cols = "123";
string[] squares = (from r in rows from c in cols select "" + r + c).ToArray();
IEnumerable<IGrouping<Char, String>> rowList = (from r in rows from s in squares where s.Contains(r) group s by r into g select g);


Dim rows As String = "ABC"
Dim cols As String = "123"
Dim squares As String() = (From r In rows From c In cols Select "" & r & c).ToArray()
Dim rowList = (From r In rows From s In squares Where s.StartsWith(r) Group By r Into g = Group Select g).Dump("rowList")

1 Ответ

1 голос
/ 08 января 2012

Есть различия между Linq в VB .NET и C #.Если вы хотите, чтобы тип возврата для оператора Linq в VB .NET был IEnumerable (Of IGrouping (Of ​​Char, String)), напишите оператор Linq следующим образом:

Dim rowList As IEnumerable(Of IGrouping(Of Char, String)) = 
(From r In rows From s In squares Where s.StartsWith(r)).GroupBy(Of Char, String)(Function(rowsquare) rowsquare.r, Function(rowsquare1) rowsquare1.s)

Таким образом, вы имеете дело сGroupedEnumerable, а не Enumerable of Enumerable.

...