2012-01-08 132 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