如何在 Linq 查询中返回特定类型?我知道您可以使用 ToList() 返回特定对象的列表,但是如何返回非列表?
MyObj x = from x in list where x.id == 99 select x;
MyObj x = (from x in list where x.id == 99 select x).Single();
如果您希望 id 可能不存在,那么您可以使用 SingleOrDefault 返回该类型的默认值(在这种情况下可能为 null)。
当然,您可以使用 First() 但我会小心,因为如果您希望只返回一个项目,这可能会隐藏错误。
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。如果找到多个匹配项,则返回列表中的第一项。MyObj x = list.Where(x => x.id == 99).FirstOrDefault();