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

Лучший способ для получения результатов одной записи в LINQ to SQL

Если я запрашиваю таблицу с условием в поле ключа, как в:

        var user = from u in dc.Users
                   where u.UserName == usn
                   select u;

Я знаю, что я получу нулевые результаты или один результат. Должен ли я продолжать и получать результаты, используя для каждого или есть еще один предпочтительный способ справиться с такой ситуацией.

4b9b3361

Ответ 1

Попробуйте что-то вроде этого:

var user = (from u in dc.Users
                   where u.UserName == usn
                   select u).FirstOrDefault();

Метод FirstOrDefault возвращает первый элемент последовательности, который удовлетворяет заданному условию или по умолчанию, если такой элемент не найден.

Ответ 2

Почему не что-то вроде

var user = dc.Users.SingleOrDefault(u=> u.UserName==usn);

Ответ 3

Также следует отметить, что First/FirstOrDefault/Single/SingleOrDefault являются точкой выполнения для команды LINQ to Sql. Поскольку оператор LINQ еще не был выполнен до этого, он может повлиять на генерируемый SQL (например, он может добавить команду TOP 1 в команду sql)

Ответ 4

Я бы использовал First() или FirstOrDefault().

Разница: при первом() будет создано исключение, если ни одна строка не может быть найдена.

Ответ 5

Я бы использовал метод SingleOrDefault.

var user = (from u in dc.Users
                   where u.UserName == usn
                   select u).SingleOrDefault();

Ответ 6

Другой вариант - использовать Contains (имя пользователя) в отличие от "=="

var user = (from u in dc.UserInfo 
                      where u.Users.Contains(username) 
                      select u).SingleOrDefault();