2012-01-08 17 views
3

次のLINQコードをC#からVB.NETに変換しようとしています。ここではVBで私の試行に続いてC#です。 VBで私はIEnumerable(Of IGrouping(Of Char, String))としてrowListを宣言したいと思いますが、それはIEnumerable(Of IEnumerable(Of Char, String))を返します。LINQ with Group Byを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には違いがあります。あなたはVB .NETでのLINQ文の戻り値の型はIEnumerableをしたい場合は(CHAR、列の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の構文を使用できないか、それとも単に違いがあるのでしょうか? –

+0

VB .NETとC#のlinqの処理方法の違いが認められているので、バグはないと思います。私はそれが言語デザインの問題に関係していると思います。 – Mzn

関連する問題