I’ve got a standard social networking paradigm where a User has a collection of friends who are also users.
I’m using Entity Framwork Code First, and my Friend Relationship is defined as follows:
modelBuilder.Entity<User>()
.HasMany(u => u.Friends)
.WithMany()
.Map(m =>
{
m.ToTable("Friendships");
m.MapLeftKey("UserId");
m.MapRightKey("FriendId");
});
What I want to do is to search my users table returning all users with an indicator of whether each returned user is friends with the current user. To be clear, I want to return Users who are Friends and Users who are not friends, but also with a boolean indicating whether each user is a friend. I know how to do this in TSQL its a basic left outer join.
I’ve seen examples of how to do a left join in LINQ, but all the examples I’ve seen are joining to a mapped type. My Friendships column doesn’t have a Mapped type.
How do I do this in EntityFramework?
Result is a list of anonymous objects containing the user and the boolean friendship indicator. You can also create a helper class
UserWithFriendshipand project into it (Select(u => new UserWithFriendship { ... }) instead of an anonymous type.