无法隐式转换类型..错误

时间:2015-03-30 01:22:34

标签: c# asp.net webforms user-profile

我已经搜索了这个错误并获得了各种结果,没有一个真正适用于我的情况。

我目前有一个用于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)

2 个答案:

答案 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);                       
}