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

SELECT  @id :=
        (
        SELECT  senderid
        FROM    mytable
        WHERE   receiverid = @id
        ) AS person
FROM    (
        SELECT  @id := 5
        ) vars
STRAIGHT_JOIN
        mytable
WHERE   @id IS NOT NULL
43
задан Tony Peterson 16 October 2008 в 00:20
поделиться

5 ответов

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

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

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

77
ответ дан Jorge Ferreira 23 September 2019 в 12:24
поделиться

Почему не что-то как

var user = dc.Users.SingleOrDefault(u=> u.UserName==usn);
18
ответ дан Danimal 23 September 2019 в 12:24
поделиться

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

5
ответ дан James Curran 23 September 2019 в 12:24
поделиться

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

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

4
ответ дан Sam 23 September 2019 в 12:24
поделиться

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

var user = (from u in dc.Users
                   where u.UserName == usn
                   select u).SingleOrDefault();
1
ответ дан Danimal 23 September 2019 в 12:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: