Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Join anonymous type in LINQ

Tags:

c#

.net

join

linq

i do have 2 c# declaration table , it column initialise during the creation of the program.

i wanted to join this table base on its UserID and UserName.

My Code is like following

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 this code i am getting the error

Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.

Anyway to join anonymous type?

like image 288
abc cba Avatar asked Apr 24 '12 08:04

abc cba


2 Answers

You need to specify the names for the anonymous type properties:

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

Note that I've also changed the right hand side of the join to use SJL rather than nSJL too, as otherwise it's invalid. It would help your code's clarity if you'd use rather more meaningful names though...

like image 160
Jon Skeet Avatar answered Sep 24 '22 18:09

Jon Skeet


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

You weren't declaring the field names for your anonymous type.

like image 24
Jakub Konecki Avatar answered Sep 23 '22 18:09

Jakub Konecki