无法将lambda表达式转换为委托类型

ggc*_*des 2 sql linq entity-framework visual-studio-2010

我正在尝试从SQL数据库中获取第一个用户,该用户Entity model正在与已经存在的数据库进行通信,该数据库具有我正在寻找的用户的用户ID.出现此错误和第二个错误.

无法将lambda表达式转换为委托类型,System.Func<iomnientitylibrary.user,bool>因为块中的某些返回类型不能隐式转换为委托返回类型.

无法隐式转换intbool.

public user GetUser(int userID)
{
     using (var context = new iomniEntities())
    {
        user u = context.users.FirstOrDefault(user => user.userID);

        return u;
    }
}
Run Code Online (Sandbox Code Playgroud)

context.users.ToList()工作正常,但我不想那么低效.

R.C*_*R.C 6

使用表达式时:user u = context.users.FirstOrDefault(user => user.userID); 返回类型是userID(这由Lambda表达式的第二部分确定)而不是类型:'user',语句根据声明期望:user u

因此,如果要返回user 其userID为"userID" 的单个,请使用:

user u = context.users.FirstOrDefault(user => user.userID==userID);
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用:

user u = context.users
         .Where(user => user.UserId==UserID)
         .Select(user => user).Single();
Run Code Online (Sandbox Code Playgroud)

还要确保您有Using语句: using System.Linq;


eth*_*n10 1

我认为你的语法有点不对劲。尝试:

public user GetUser(int intUserID)
{
     using (var context = new iomniEntities())
    {
        user u = context.users.Where(u => u.userID == intUserID).FirstOrDefault();

        return u;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者要保留您的版本,只需对其进行修改:

public user GetUser(int intUserID)
{
     using (var context = new iomniEntities())
    {
        user u = context.users.FirstOrDefault(user => user.userID == intUserID);

        return u;
    }
}
Run Code Online (Sandbox Code Playgroud)