.Net-LINQ查询返回单个对象?
是否可以使用LINQ查询返回单个对象而不是列表.Net-LINQ查询返回单个对象?,.net,linq,.net,Linq,是否可以使用LINQ查询返回单个对象而不是列表 User user = (from User u in users where u.id == 5 select u); 对 如果查询返回多个元素,则会引发异常 如果只需要第一个元素: User user = (from User u in users where u.id == 5 select u).First() 使用SingleOrDefault()和FirstOrDefault()在不存在元素时
User user = (from User u in users
where u.id == 5
select u);
对
如果查询返回多个元素,则会引发异常
如果只需要第一个元素:
User user = (from User u in users
where u.id == 5
select u).First()
使用SingleOrDefault()和FirstOrDefault()在不存在元素时返回null作为引用类型。使用以下任一项:
.Single() // return a single
.SingleOrDefault() // return a single or the default value if there are no matches
.First() // return the first object it encounters that matches
.FirstOrDefault() // return the first object it encounters that matches, or the default value if no matches
如果存在多个匹配项,.Single()和.SingleOrDefault()将引发异常。或者更简单一些:
User user = users.Single(u => u.id == 5);
如果查询返回多个元素,则需要使用
First
,因为Single
会在查询中有多个元素时引发异常。或First和FirstOrDefault
User user = (from User u in users
where u.id == 5
select u).FirstOrDefault();
dmck是正确的,它将实现这一点。但是,根据设计,如果集合中有多个对象,它将抛出异常。如果要避免引发异常,您还有几个其他选项:
- 方法
- 紧跟在索引器中的Enumerable.ToArray方法,例如:
User user = (from User u in users where u.id == 5 select u).ToArray()[0];
SingleOrDefault()
和FirstOrDefault()
将返回默认值。对于值类型,这不是null
,而是特定值类型的默认值。
User user = (from User u in users
where u.id == 5
select u).ToArray()[0];