Возвратите один результат Запроса LINQ

если у Вас есть избранный запрос LINQ, который должен только возвратить один результат, у Вас должен быть цикл foreach для получения результата?

Или есть ли лучший путь?

6
задан Tony The Lion 18 December 2009 в 18:29
поделиться

5 ответов

var myLinqObj = db.MyObjects.Take(1).SingleOrDefault();
5
ответ дан 8 December 2019 в 03:09
поделиться
// Will return a default value if no object is found in the DB
db.Table.SingleOrDefault(x => x.something == someParameter);

или

// Will throw an exception if records are not found
db.Table.Single(x => x.something == someParameter);

Спасибо Mehrdad за комментарий ... обе строки были обновлены.

Если возможно, что ваш запрос может привести к возврату нескольких записей, тогда (как указано в комментариях) Single () и SingleOrDefault () - неправильные методы для вызова. Вы можете сохранить тот же синтаксис, но вызвать First () и FirstOrDefault () соответственно.

18
ответ дан 8 December 2019 в 03:09
поделиться

Вы можете использовать либо First , либо Single .

First возвращает первую строку, независимо от того, несколько строк или только one.

Single ожидает, что будет возвращена только одна строка, и выдает исключение, если есть несколько строк.

Single потенциально является лучшим выбором, если вы ожидаете, что будет только одна строка, поэтому что вы сразу увидите проблему и сможете устранить ее.

5
ответ дан 8 December 2019 в 03:09
поделиться

Вы можете просто использовать .First () или .FirstOrDefault () следующим образом:

Foo foo = query.Select(a => a.Name == "foo").FirstOrDefault();
2
ответ дан 8 December 2019 в 03:09
поделиться

Из всего сказанного мной добавлено использование значения после того, как у вас есть единственный элемент, если вы используете LINQ-to-XML.

И Выберите новый {* cols *} , если это список, массив или таблица. Пример. ... выберите новый {c.Name, c.Value};

Этот совет поможет вам получить значения.

0
ответ дан 8 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

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