2012-04-24 26 views
6

tengo una tabla de declaración de 2 C#, inicializar la columna durante la creación del programa.Unirme al tipo anónimo en LINQ

quería unirme a esta base de tabla en su UserID y UserName.

Mi código es como seguir

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 

en este código que estoy recibiendo el error

no válida declarador miembro de tipo anónimo. Los miembros de tipo anónimo deben declararse con una asignación de miembro, nombre simple o acceso de miembro.

¿De todos modos para unir el tipo anónimo?

Respuesta

13

es necesario especificar los nombres de las propiedades de tipo anónimo:

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 

Tenga en cuenta que también he cambiado el lado derecho de la unión de usar SJL en lugar de nSJL también, como por lo demás es válido. Ayudaría a la claridad de su código si usara nombres bastante más significativos ...

+0

@gdoron: Sí, ya lo he arreglado :) –

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 

No estaba declarando los nombres de campo para su tipo anónimo.

+0

Gracias Jakub –

Cuestiones relacionadas