C# LINQ与唯一ID

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();

我已经写了一些LINQ,在这里,当我添加一个新用户时,我会对照数据库检查用户名是否唯一。我的代码(见下文)可以工作,但有更好的方法吗?如果用户名不存在,我目前依赖于捕获错误

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));