如何将C#中使用Group By的LINQ代码转换为VB.NET?

3

我在尝试将以下C#的LINQ代码转换为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

VB .NET和C#中的Linq存在差异。如果您想要在VB .NET中使用Linq语句返回类型为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。


谢谢,可以了。Linq语法不能使用是一个bug还是只是不同之处? - Kevin Swarts
我认为这不是一个bug,因为VB .NET和C#处理linq的方式不同是公认的。我认为这与语言设计问题有关。 - Lzh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接