2012-04-24 19 views
6

Ich habe 2 C# Deklarationstabelle, es Spalte während der Erstellung des Programms initialisieren.Beitreten anonymen Typ in LINQ

Ich wollte diese Tabelle auf seiner UserID und UserName beitreten.

My-Code ist wie folgt

from nSJL in UserList.AsEnumerable() 
join SJL in UserListOnline.AsEnumerable() 
on 
new { nSJL.Field<int>("UserID"), nSJL.Field<string>("UserName") } 
equals 
new { nSJL.Field<int>("UserID"), nSJL.Field<string>("UserName") } 
into sjList 

in diesem Code ich den Fehler

ungültig anonymen Typ Mitglied declarator bin immer. Anonyme Member müssen mit einer Member-Zuweisung, einem einfachen Namen oder Member-Zugriff deklariert werden.

Wie auch immer anonymen Typ beizutreten?

Antwort

13

Sie müssen die Namen für die anonymen Typen Eigenschaften angeben:

from nSJL in UserList.AsEnumerable() 
join SJL in UserListOnline.AsEnumerable() 
on 
new { UserID = nSJL.Field<int>("UserID"), 
     UserName = nSJL.Field<string>("UserName") } 
equals 
new { UserId = SJL.Field<int>("UserID"), 
     UserName = SJL.Field<string>("UserName") } 
into sjList 

Bitte beachte, dass ich habe auch die rechte Seite der Verknüpfung geändert SJL zu verwenden, anstatt nSJL zu, da sonst ungültig es ist. Es würde der Klarheit deines Codes helfen, wenn du ziemlich aussagekräftigere Namen verwenden würdest ...

+0

@gdoron: Ja, habe schon behoben :) –

5
from nSJL in UserList.AsEnumerable() 
join SJL in UserListOnline.AsEnumerable() 
on 
new{ UserID = nSJL.Field<int>("UserID"), UserName = nSJL.Field<string>("UserName") } 
equals 
new { UserID = nSJL.Field<int>("UserID"), UserName = nSJL.Field<string>("UserName") } into sjList 

Sie haben die Feldnamen für Ihren anonymen Typ nicht deklariert.

+0

Danke Jakub –