2009-04-29 6 views
0

Registrierte Tabelle hatFabrikat Linq subquery

stucture
regid 
userid 

var Registered = form r in dc.registered where ... // list contains userid as f.k. 

I Benutzerliste möchten, die registriert hat.

so wie

var user = from u in dc.users where u.userid in // should contains in Register.userid 

abfragen möchte ich mehr über Linq erfahren, wo ich am besten stopft finden kann?

Antwort

0

Ich vermute, Sie wollen:

var users = from u in dc.users 
      join r in Registered on u.userid equals r.userid 
      select u; 

Beachten Sie, dass diese effizienter sein wird als eine „Any“ Lösung, wie es einmal den Satz von registrierten Benutzer-IDs aufbauen (als Hashset), an dem der Punkt Test für jeden Benutzer ist schnell.

+0

Ich weiß nicht warum, aber immer noch nicht funktioniert. Ich spalte 'var Registriert' weil es auch eine Filterung hat. – Vikas

+0

"Nicht funktioniert" ist ziemlich vage. Kompiliert es? Wenn ja, welche Ergebnisse gibt es? Zu viele? Zu wenig? Die falsche Art von Ergebnis? –

+0

Ok, ich habe es gelöst. Hilfe von LINQPad bekommen – Vikas

0

Sie können wie etwas tun:

var innerQuery = from r in dc.Registered 
       select r; 

var outerQuery = from k in dc.Users 
       where (innerQuery).Any(x => x.UserID == k.UserID) 
       select k; 

Ich weiß nicht, ob es in Bezug auf die Syntax völlig korrekt ist, aber dies ist eine Möglichkeit, Unterabfragen in LINQ durchzuführen. In jedem Fall sollte es Sie in die richtige Richtung weisen.

Zum Lernen von LINQ, das ist eine andere Frage, die das gleiche behandelt: What are some good LINQ resources.