2010-12-14 11 views
0

私はLINQクエリから2次元配列をロードしますか?

.. ..私は以下のような2次元配列を取得しようとしている...

ACFTTail5 (0)(0) “Tail-a” 
    ACFTTail5 (0)(1) “RDF-a” 
    ACFTTail5 (1)(0) “Tail-b” 
    ACFTTail5 (1)(1) “RDF-b” 
    ACFTTail5 (2)(0) “Tail-c” 
    ACFTTail5 (2)(1) “RDF-c” 

ETCを

Dim ACFTTail5 = (From tailcounts In db.TailCounts _ 
       Where tailcounts.Model = "UH-60A" _ 
       Group tailcounts By _ 
       tailcounts.Tail, tailcounts.Model _ 
       Into g = Group Order By Tail _ 
       Select Tail, rdf = CStr(g.Sum(Function(p) _ p.TailCount))).ToArray 

をVB.Netを使用して、次のLINQクエリを持っています私が試してみました

...

Dim ACFTTail5(,) As String 

    ACFTTail5 = (From tailcounts In db.TailCounts _ 
       Where tailcounts.Model = "UH-60A" _ 
       Group tailcounts By _ 
       tailcounts.Tail, tailcounts.Model _ 
       Into g = Group Order By Tail _ 
       Select Tail, rdf = CStr(g.Sum(Function(p) p.TailCount))) 

しかし、次のエラーを取得する...

「タイプのオブジェクトをキャストすることができません 'System.Data.Linq.DataQuery 1[VB$AnonymousType_4 2 [可能System.String、可能System.String]]' と入力する '可能System.String [、]'。」

任意の提案大幅にあなたは2次元配列にそれを強制するとそれほど心配することができれば、あなただけのコンパイラは、匿名のIQueryableタイプを割り当て、反復のためにそれを使用する可能性があります...

おかげ

+0

2次元配列に固執している特別な理由はありますか? –

答えて

0

をいただければ幸いです。

Dim ACFTTail5 = (From tailcounts In db.TailCounts _ 
      Where tailcounts.Model = "UH-60A" _ 
      Group tailcounts By _ 
      tailcounts.Tail, tailcounts.Model _ 
      Into g = Group Order By Tail _ 
      Select Tail, rdf = CStr(g.Sum(Function(p) p.TailCount))) 

その後、For eachイテレーターを使用して、必要なものをすべて循環させることができます。

編集:
私は、任意のストレッチで、この小さな作品をテストしていませんが、あなたは私がここで使用しているキーは、それを選択することで一覧

Dim ACFTTail5 as List(Of String()) 

ACFTTail5 = new List(Of String())(From tailcounts In db.TailCounts _ 
      Where tailcounts.Model = "UH-60A" _ 
      Group tailcounts By _ 
      tailcounts.Tail, tailcounts.Model _ 
      Into g = Group Order By Tail _ 
      Select new String() { Tail, rdf = CStr(g.Sum(Function(p) p.TailCount)) }) 

Dim ACFTTail5_2d_Array as String(,) = ACFTTail5.ToArray() 

を使用することができるはずです新しいクラス(この場合は文字列配列)に直接追加し、特に文字列配列をListに保持します。次に、それを文字列配列の文字列に送ることができるはずです。

+0

私は配列の中に入れようとしています。なぜなら、後でアプリケーションで「テール」または「RDF」のいずれかの値をソートできる必要があるからです。 – Bear

+0

@Bear - アップデートを投稿しました。それは完全ではないかもしれないし、働く(擬似コードとして扱う)かもしれないが、アイディアは堅実でなければならない。 –

+0

Joel、この部分は動作します.. Dim ACFTTail5 List(Of String())ACFTTail5 =新しいリスト(Of String())(tailcounts In db.TailCounts _ここでtailcounts.Model ... ETCこの部分は動作し、しかし、 "Dim ACFTTail5_2d_Array As String(、)= ACFTTail5.ToArray"は、型の値 '1次元配列の1次元配列の値'を '2次元配列のString'に変換できないため、 '1次元配列の文字列'は '文字列'から派生しません。 " – Bear