2012-06-20 5 views
0

Как вы возвращаете определенный тип запроса Linq? Я знаю, что вы можете использовать ToList(), чтобы возвращать список определенных объектов, но как вы возвращаете не список?Linq, возвращающий определенный тип

MyObj x = from x in list where x.id == 99 select x; 
+0

Вы используете слова «специфический тип» для обозначения «экземпляр». –

ответ

3
MyObj x = list.FirstOrDefault(i=>i.id == 99); 

Альтернативные IEnumerable методы, которые можно использовать, чтобы вернуть один элемент:

  • list.Single(i=>i.id == 99): генерирует исключение, если совпадений не найдено или несколько соответствий.
  • list.SingleOrDefault(i=>i.id == 99): возвращает null, если совпадений не найдено, генерирует исключение, если найдено несколько совпадений.
  • list.First(i=>i.id == 99): выдает исключение, если совпадений не найдено. Если найдено несколько совпадений, возвращает первый элемент в списке.
  • list.FirstOrDefault(i=>i.id == 99): возвращает null, если совпадений не найдено. Если найдено несколько совпадений, возвращает первый элемент в списке.
4
MyObj x = (from x in list where x.id == 99 select x).Single(); 

, если вы ожидаете, что идентификатор не может существовать, то вы могли бы использовать SingleOrDefault вернуть значение по умолчанию для данного типа (возможно, нуль в данном случае).

Вы могли бы, конечно, использовать First(), но я был бы осторожен, так как это может скрыть ошибки, если вы ожидаете получить только один элемент.

1
MyObj x = list.Where(x => x.id == 99).FirstOrDefault(); 
Смежные вопросы