我的LINQ是这样的:无法隐式转换类型“System.Linq.IQueryable <AuthenticationApp.Models.User>”到“AuthenticationApp.Models.User”
User us = from s in entities.Users
where s.Username.Equals(username)
select s;
任何想法,为什么我收到上述错误?
我的LINQ是这样的:无法隐式转换类型“System.Linq.IQueryable <AuthenticationApp.Models.User>”到“AuthenticationApp.Models.User”
User us = from s in entities.Users
where s.Username.Equals(username)
select s;
任何想法,为什么我收到上述错误?
使用FirstOrDefault
: -
User us = (from s in entities.Users
where s.Username.Equals(username)
select s).FirstOrDefault();
您的查询返回多个结果,但你想存储在AuthenticationApp.Models.User
可容纳因此只有一个对象转换错误。
或者更好的是 -
User us = entities.Users.FirstOrDefault(x => x.Username.Equals(username));
更新:
如果你相信它会返回仅有1对象回来,你可以使用SingleOrDefault
了。检查两个here之间的差异。
即使我知道我只会得到一个结果? – user3762810
@ user3762810 - 没有得到你。你知道只有1个'UserName'? –
哦,没关系,我现在明白了。 – user3762810
由于投影返回IEnumerable
(IQueryable
),您将收到错误信息。要获得User
的名称,您可以使用以下内容:
try
{
var user = entities.Users.SingleOrDefault(u => u.Username.Equals(username));
}
catch
{
// handle the case when there are more than
// one user with given name in DB
}
用户名返回列表。使用FirstorDefault()。 – Jude