C# LINQ与唯一ID
我已经写了一些LINQ,在这里,当我添加一个新用户时,我会对照数据库检查用户名是否唯一。我的代码(见下文)可以工作,但有更好的方法吗?如果用户名不存在,我目前依赖于捕获错误C# LINQ与唯一ID,c#,.net,linq,extension-methods,C#,.net,Linq,Extension Methods,我已经写了一些LINQ,在这里,当我添加一个新用户时,我会对照数据库检查用户名是否唯一。我的代码(见下文)可以工作,但有更好的方法吗?如果用户名不存在,我目前依赖于捕获错误 try { var User = (from u in _database.Users where u.UserID == strUserName select u).First();
try
{
var User = (from u in _database.Users
where u.UserID == strUserName
select u).First();
if (User != null)
{
blnUnique = false;
}
}
catch
{
blnUnique = false;
}
使用FirstOrDefault()而不是First()数据库是存储库吗?如果是这样,我建议在内部实现一个字典,这样您就可以公开
FindUser(userID)
方法,如果找不到用户ID,则返回null。您的循环无法很好地扩展。您可以使用扩展方法:
bool isUnique = (from u in database.Users
where u.UserID == userName
select u).Any();
下面是另一种表达方式,使用:
请注意,将进行区分大小写的顺序比较。如果要进行不区分大小写的比较,必须使用以下方法:
谢谢…“Any”看起来正是我想要的,因为它返回的是true或false,而不是FirstOrDefault
bool isUnique = database.Users.Any(u => u.UserID == userName);
bool isUnique = database.Users.Any(
u => u.UserID.Equals(userName, StringComparison.OrdinalIgnoreCase));