Что такое эффективный запрос Entity Framework, чтобы проверить, являются ли пользователи друзьями?

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

Есть ли здесь лучший способ, чем ||?

8
задан Peter Mortensen 21 August 2011 в 20:45
поделиться