Существует таблица под названием UserFriends
, в которой хранятся записи о дружбе пользователей.
Для каждой дружбы есть только одна запись,
User1ID User2ID IsConfirmed
1 2 true
которая по бизнес-логике равна
User1ID User2ID IsConfirmed
2 1 true
, но обе не могут произойти для одной пары.
Какой самый эффективный запрос (еще читаемый и не включающий простой SQL) Entity Framework для определения, является ли пользователь A другом пользователя B, учитывая, что мы не знаем, какой из них находится в первом или во втором столбце?
Моя попытка проста и очевидна:
public bool AreFriends (int user1Id, int user2Id)
{
return MyObjectContext.UserFriends
.Any (uf => uf.IsConfirmed && (
(uf.UserID == user1Id && uf.FriendUserID == user2Id)
|| (uf.UserID == user2Id && uf.FriendUserID == user1Id)
));
}
Есть ли здесь лучший способ, чем ||
?