2009-06-03 12 views
0

Ich bin hier in ein bisschen eine Straßensperre, aber was ich möchte schließlich tun, ist ein Recordset basierend auf einer Abfrage erstellen und speichern Sie die Informationen in separaten Objekte (nennen wir sie Foo) und erstellen Sie dann eine neue Abfrage, um alle Foo-Objekte mit derselben ID in eine ArrayList in Bar-Objekte zu gruppieren. Wie würde ich das in Linq mit SQL machen?Abfrage eines Recordsets aus einer vorhandenen Abfrage Linq To Sql

public class Foo{ 
    public int id{get;set;} 
    public string name{get;set;} 
} 

public class Bar{ 
    public ArrayList foos{get;set;} 
} 

var query = from tFoo in fooTable join tFoo2 in fooTable2 on tFoo.id equals tFoo2.id 
      where tFoo2.colour = 'white' 
      select new Foo 
      { 
       id = tFoo.idFoo, 
       name = tFoo.name 
      }; 

var query2 = //iterate the first query and find all Foo objects with the the same 
      //tFoo.idFoo and store them into Bar objects 

Also, am Ende soll ich mit einer Liste von Foo Objekten eine Re-Cord von Bar-Objekten hat.

+0

Gibt es einen bestimmten Grund, warum Sie eine Array möchten? – cdonner

+0

und wenn Sie Ihre IQueryable für Farben abfragen möchten, müssen Sie die Farbe zu Ihrer Foo-Klasse hinzufügen. – cdonner

+0

Grund für die ArrayList ist, dass es mehr als ein foo in jedem Balken gibt. – Ayo

Antwort

1

Es ist schwer zu sagen, ob Sie 1 Bar oder mehrere Bars wollen, aber hier ist mein bester Stich mit den bereitgestellten Informationen.

Sie Gesetzt hatte:

public class Foo 
{ 
    public int id {get;set;} 
    public string name {get;set;} 
    public string colour {get;set;} 
} 

public class Bar 
{ 
    public int id {get;set;} 
    public List<Foo> Foos {get;set;} 
} 

Dann könnten Sie tun:

//executes the query and pulls the results into memory 
List<Foo> aBunchOfFoos = 
(
    from foo in db.Foos 
    where foo.colour == "white" 
    select foo 
).ToList(); 

// query those objects and produce another structure. 
// no database involvement 
List<Bar> aBunchOfBars = aBunchOfFoos 
    .GroupBy(foo => foo.id) 
    .Select(g => new Bar(){id = g.Key, Foos = g.ToList() }) 
    .ToList(); 
+0

Dies erstellt ordnungsgemäß foo Objekte und speichert sie in bar Objekte, aber der Algorithmus, um alle die gleichen IDs aus der ersten Abfrage zusammen in einer Liste gruppiert funktioniert nicht – Ayo

+0

Funktioniert nicht, wie? Ich habe diese Technik viele Male benutzt. –