我写了一些LINQ,当我添加新用户时,我检查数据库中的用户名是否唯一。我的代码(见下文)可以工作,但是是否有更好的方法来做到这一点?如果用户名不存在,我目前依赖于捕获错误。
try
{
var User = (from u in _database.Users
where u.UserID == strUserName
select u).First();
if (User != null)
{
blnUnique = false;
}
}
catch
{
blnUnique = false;
}
您可以使用Enumerable.Any
bool isUnique = (from u in database.Users
where u.UserID == userName
select u).Any();
这是另一种使用lambda来表达它的方法:
bool isUnique = database.Users.Any(u => u.UserID == userName);
注意,String类上的等号操作符将进行区分大小写的序号比较。如果希望进行不区分大小写的比较,则必须使用String。=方法:
bool isUnique = database.Users.Any(
u => u.UserID.Equals(userName, StringComparison.OrdinalIgnoreCase));
使用FirstOrDefault()代替First()
_database是一个存储库吗?如果是这样,我建议在内部实现一个字典,这样就可以公开
FindUser(userID)
方法,如果没有找到userID则返回null。你的循环不能很好地伸缩