使用LINQ检查数据库中是否存在记录

rog*_*nin 0 c# linq casting

我在这里得到了一个施法错误,但我不明白为什么.

protected bool isPlayerdb(string userName)
{
    try
    {
        Users adminUsers = from users in SoccerEntities.Users
                           where users.roleId == new Guid("ED85788D-72DA-4D0A-8D5E-B5378FC00592") 
                           && users.UserName == userName
                           select users;

        if (adminUsers != null)
            return true;
        else
            return false;
    }
    catch (Exception ex)
    {
        throw new EntityContextException("isPlayer failed.", ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

调试器中的错误是:

错误11无法将类型隐式转换 'System.Linq.IQueryable<soccerCmsDal.Users>'为'soccerCmsDal.Users'.存在显式转换(您是否缺少演员?)C:\new code\UniteCms\UniteCms\soccerCmsDal\SocerDataAccess.cs 80 23 soccerCmsDal

Bac*_*cks 9

如果只需要一条记录,请使用FirstOrDefaultSingleOrDefault:

Users adminUsers = (from users in SoccerEntities.Users
                           where users.roleId == new Guid("ED85788D-72DA-4D0A-8D5E-B5378FC00592") && users.UserName == userName
                           select users).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

如果你需要检查,如果玩家存在,你可以使用任何:

bool exists = (from users in SoccerEntities.Users
                           where users.roleId == new Guid("ED85788D-72DA-4D0A-8D5E-B5378FC00592") && users.UserName == userName
                           select users).Any();
Run Code Online (Sandbox Code Playgroud)