Существует таблица с именем 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)
));
}
Есть ли лучший способ, чем ||
здесь?