0

如何在 Linq 查询中返回特定类型?我知道您可以使用 ToList() 返回特定对象的列表,但是如何返回非列表?

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

3 回答 3

4
MyObj x = (from x in list where x.id == 99 select x).Single();

如果您希望 id 可能不存在,那么您可以使用 SingleOrDefault 返回该类型的默认值(在这种情况下可能为 null)。

当然,您可以使用 First() 但我会小心,因为如果您希望只返回一个项目,这可能会隐藏错误。

于 2012-06-20T10:46:13.243 回答
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。如果找到多个匹配项,则返回列表中的第一项。
于 2012-06-20T10:47:47.407 回答
1
MyObj x = list.Where(x => x.id == 99).FirstOrDefault();
于 2012-06-20T10:47:29.173 回答