0

I have three tables:

  • User (Id, Username)
  • Membership (Id, UserId, GroupId)
  • Group (Id, GroupName)

How to apply this query using LINQ:

select Username, GroupName
from (([Membership]
inner join [User]  on [Membership].UserId = [User].Id)
inner join [Group] on [Membership].GroupId = [Group].Id)
where [Group].Id = 1
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
  • 3
    Does this answer your question? [Entity Framework Join 3 Tables](https://stackoverflow.com/questions/21051612/entity-framework-join-3-tables) – Guru Stron May 11 '20 at 22:17

2 Answers2

0

You can use something like this:

from membership in MembershipRepository.GetAll()
join user in UserRepository.GetAll() on membership.UserId equals user.id
join group in GroupRepository.GetAll() on membership.GroupId equals group.id 
where group.id == 1
select new {user.Username, group.GroupName};

However, this won't work for left or right joins. The syntax is slightly differnt for them

Cornelis
  • 1,065
  • 8
  • 23
0
var member = Context.membership 
                    .Include(i => i.user)
                    .Include(i => i.group)
                    .Where(i => i.Id == id)
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Chameera
  • 192
  • 2
  • 8
  • public class user { [Foreign Key("membership ")] public int membership Id { get; set; } public virtual membership membership { get; set; } } public class group { [ForeignKey("group")] public int group Id { get; set; } public virtual group group { get; set; } } – Chameera May 12 '20 at 04:03
  • 1
    Instead of placing code in a follow-up comment, please instead edit your answer to include it as formatted code. While you’re at it, I’d recommend offering an additional explanation of what you’re doing here to help the OP—as well as future readers!—understand why this is a good approach. Thank you in advance! – Jeremy Caney May 12 '20 at 04:30