abc cba
abc cba

Reputation: 2633

Join anonymous type in 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?

Upvotes: 7

Views: 12782

Answers (2)

Jon Skeet
Jon Skeet

Reputation: 1500145

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...

Upvotes: 14

Jakub Konecki
Jakub Konecki

Reputation: 46008

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.

Upvotes: 6

Related Questions