我已经搜索了这个错误并获得了各种结果,没有一个真正适用于我的情况。
我目前有一个用于Web窗体中的标识的CRUD(脚手架),它将用作用户配置文件。
我有这个
public IQueryable<WebApplication2.Models.MyAppUser> GetData()
{
var currentUser = _db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
return currentUser;
}
但是我收到了这个错误:
错误1无法隐式转换类型 &#39; WebApplication2.Models.MyAppUser&#39;至 &#39; System.Linq.IQueryable&#39 ;.一个 存在显式转换(您是否错过了演员?)
正如我所说,我做了一些研究。我相信它是因为我试图返回变量..但是我不知道如何妥善处理这个问题。我尝试创建一个可以完成它的功能但是对我来说也没有用。
请帮忙。
我正在使用网络表单(不是MVC)
答案 0 :(得分:1)
您要么使用错误的LINQ方法,要么使用错误的方法签名。
FirstOrDefault
方法返回单个MyAppUser
,而不是IQueryable<MyAppUser>
。你有两种方法可以解决这个问题:
FirstOrDefault
电话Take(1)
来电
以下是:
return _db.Users.Where(u => u.UserName == User.Identity.Name).Take(1);
MyAppUser
而不是IQueryable<MyAppUser>
这两个修复程序都会让您的代码进行编译。挑选一个取决于在您的应用程序中使用GetData
方法。
答案 1 :(得分:0)
首先:为什么要返回IQueryable&lt;&gt;你只需要返回一个对象
第二:实体obejct中的cuurentUser你应该把它投射到你的域模型:
public WebApplication2.Models.MyAppUser GetData()
{
var currentUser = _db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
return currentUser ;
}
或
public IQueryable<WebApplication2.Models.MyAppUser> GetData()
{
return _db.Users.Where(u => u.UserName == User.Identity.Name);
}