Подтвердить что ты не робот

Последовательность не содержит ошибки элементов, но я хочу проверить значение null

У меня есть следующая проблема:

public Boolean Exists(String userName)
{
    IRepository<User> = new UserRepository();
    User user = userRepository.First(u => u.Name == userName);

    if (user == null) return false;

    // Exists!
    return true;
}

Проблема в том, что я не могу проверить объект User для null. Прежде чем я доберусь туда, я получаю сообщение InvalidOperationException " Последовательность не содержит элементов".

Это кажется мне очень странным, тем более, что я не хочу устанавливать поток управления с исключениями (например, инкапсулировать в try..catch и возвращать true/false в соответствующих частях).

Что здесь происходит? Это нормально или что-то не так с моим репозиторием (подсказка?!)

Кстати, этот код отлично работает, когда элемент, который я ищу, существует (Пользователь извлекается и т.д.). Это не работает, когда нет совпадения.

4b9b3361

Ответ 1

Используйте FirstOrDefault вместо First. Это возвращает null перед пустой коллекцией.

IRepository<User> = new UserRepository();
User user = userRepository.FirstOrDefault(u => u.Name == userName);

Ответ 2

Попробуйте изменить .First() на .FirstOrDefault().

Ответ 3

Используйте .FirstOrDefault(), чтобы предотвратить эту ошибку.