2010-12-14 12 views
0

ich VB.Net bin mit und haben die folgende LINQ-Abfrage ...Zweidimensionales Array von LINQ-Abfrage laden?

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 

Ich versuche, eine zweidimensionale Anordnung wie unten zu bekommen ..

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 ..

ich habe versucht ...

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))) 

Aber bekommen die Fehler folgende ...

„Kann nicht das Objekt des Typs 'System.Data.Linq.DataQuery 1[VB$AnonymousType_4 2 [System.String, System.String]]' eingeben 'System.String [,]'. Werfen“

Irgendwelche Vorschläge sehr geschätzt ...

Dank

+0

Gibt es einen bestimmten Grund, warum Sie mit dem 2-D-Array festhängen? –

Antwort

0

Wenn Sie weniger mit ihn in einen 2D-Array zwingt betroffen sein könnten, wäre, könnte man einfach erlaubt den Compiler den anonymen IQueryable Typen zuordnen und dass für Iteration verwenden:

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))) 

Sie könnten dann einfach den For each Iterator verwenden, um durchzulaufen, was immer Sie benötigen.

Edit:
ich nicht dieses kleine Stück von einer Strecke getestet haben, aber Sie sollten eine Liste

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() 

Der Schlüssel verwenden können, die ich hier bin mit ist es auszuwählen direkt in eine neue Klasse (in diesem Fall ein String-Array), und halten Sie es in einer Liste speziell für String-Arrays. Dann sollten Sie in der Lage sein, das an ein String-Array von String-Arrays zu senden.

+0

Ich versuche, es in ein Array zu bekommen, weil ich später in der Anwendung auf "Tail" oder "RDF" Werte sortieren müssen. – Bear

+0

@Bear - ein Update veröffentlicht. Es kann nicht perfekt sein oder funktionieren (behandeln Sie es als Pseudo-Code), aber die Idee sollte solide sein. –

+0

Joel, Dieser Teil funktioniert .. Dim ACFTTail5 Als Liste (Of String()) ACFTTail5 = Neue Liste (Of String()) (Von tailcounts In db.TailCounts _ Wo tailcounts.Model ... ETC dieser Teil funktioniert und geben ein "Dim ACFTTail5_2d_Array As String (,) = ACFTTail5.ToArray" gibt einen Fehler von "Wert des Typs '1-dimensionales Array von 1-dimensionalen Array von String' kann nicht in '2-dimensionale Array von String' konvertiert werden, weil '1-dimensionales Array von String' wird nicht von 'String' abgeleitet " – Bear

Verwandte Themen