2012-01-08 79 views
3

我想将以下LINQ代码从C#转换为VB.NET。这里是C#,接着我尝试了VB。在VB中,我想声明rowList为IEnumerable(Of IGrouping(Of Char, String)),但它返回IEnumerable(Of IEnumerable(Of Char, String))如何将LINQ从C#转换为VB.NET?

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

VB.NET和C#中的Linq存在差异。如果你想在LINQ的语句返回类型在VB .NET是IEnumerable的(中IGrouping(煤焦,字符串))写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的Enumerable。

+0

谢谢,这是有效的。 Linq语法不能被使用或仅仅是一个区别的错误吗? – 2012-01-08 19:27:52

+0

我不认为它是一个错误,因为在VB.NET和C#过程linq的方式的差异被承认。我认为它涉及语言设计问题。 – Mzn 2012-01-08 19:41:02