Entity framework LINQ检查存在用户名,然后获取该用户';身份证

Entity framework LINQ检查存在用户名,然后获取该用户';身份证,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我有一个账户表: table Account ( UserId int identity(1, 1), UserName nvarchar(20) not null unique, Password nvarchar(20) not null ) 通过使用LINQ。那么,我是否可以检查帐户的existUserName。这是真的,然后为该帐户获取UserId (我正在使用ASP MVC 4和实体框架)当使用Linq从数据库查询时,我更喜欢使用查询表

我有一个账户表:

    table Account
    (
    UserId int identity(1, 1),
    UserName nvarchar(20) not null unique,
    Password nvarchar(20) not null
    )
通过使用LINQ。那么,我是否可以检查帐户的exist
UserName
。这是真的,然后为该帐户获取
UserId

(我正在使用ASP MVC 4和实体框架)

当使用Linq从数据库查询时,我更喜欢使用查询表达式,它更接近SQL表示法,而不是Lambda表示法

假设您拥有
用户名

try {
    int userId = (from x in context.Account
                   where x.UserName == username
                   select x.UserId).SingleOrDefault());

    if (userId > 0){
        // user exists
    }
    else {
        // user does not exist
    }
}
catch(InvalidOperationException ex){
    // has more than one element
}

当使用Linq从DB进行查询时,我更喜欢使用查询表达式,它比Lambda表示法更接近SQL表示法

假设您拥有
用户名

try {
    int userId = (from x in context.Account
                   where x.UserName == username
                   select x.UserId).SingleOrDefault());

    if (userId > 0){
        // user exists
    }
    else {
        // user does not exist
    }
}
catch(InvalidOperationException ex){
    // has more than one element
}

编辑:好多了。:)等待实际上没有,它仍然会返回0。所以userId将有一个值。是的,我已经更新了这个值。“OrDefault()”表示将返回
default(TSource)
,而不是
default(tdestini)
:)是的。您可以将UserId投影到查询中的一个可为null的int中,在这种情况下,SingleOrDefault()可能会返回一个不带值的可为null的int。我还没测试过,它也可以用!在某些情况下,对于
trycatch
,最好返回多个元素。我也感谢你的邀请。编辑:好多了等待实际上没有,它仍然会返回0。所以userId将有一个值。是的,我已经更新了这个值。“OrDefault()”表示将返回
default(TSource)
,而不是
default(tdestini)
:)是的。您可以将UserId投影到查询中的一个可为null的int中,在这种情况下,SingleOrDefault()可能会返回一个不带值的可为null的int。我还没测试过,它也可以用!在某些情况下,对于
trycatch
,最好返回多个元素。我也感谢你的邀请