LINQ 和唯一 ID

发布于 2024-10-30 17:38:17 字数 443 浏览 1 评论 0原文

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

try
        {
            var User = (from u in _database.Users
                        where u.UserID == strUserName
                        select u).First();

            if (User != null)
            {
                blnUnique = false;
            }
        }
        catch
        {
            blnUnique = false;
        }

I have written some LINQ where I check against a database whether or not the username is unique when I am adding a new user. My code (see below) works, but is there a better way to do this? I am currently relying on trapping an error if the username does not exist.

try
        {
            var User = (from u in _database.Users
                        where u.UserID == strUserName
                        select u).First();

            if (User != null)
            {
                blnUnique = false;
            }
        }
        catch
        {
            blnUnique = false;
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笔落惊风雨 2024-11-06 17:38:17

您可以使用 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 类上的 equals 运算符 将进行区分大小写的序数比较。如果您希望进行不区分大小写的比较,则必须使用 字符串。等于方法:

bool isUnique = database.Users.Any(
    u => u.UserID.Equals(userName, StringComparison.OrdinalIgnoreCase));

You can use the Enumerable.Any<TSource>() extension method:

bool isUnique = (from u in database.Users
                 where u.UserID == userName
                 select u).Any();

Here's an alternative way of expressing this using a lambda:

bool isUnique = database.Users.Any(u => u.UserID == userName);

Note that the equals operator on the String class will make a case-sensitive ordinal comparison. If you wish to make a case-insensitive comparison you'll have to use the String.Equals method:

bool isUnique = database.Users.Any(
    u => u.UserID.Equals(userName, StringComparison.OrdinalIgnoreCase));
丑丑阿 2024-11-06 17:38:17

使用 FirstOrDefault() 而不是 First()

Use FirstOrDefault() instead of First()

清泪尽 2024-11-06 17:38:17

_database 是存储库吗?如果是这样,我建议在内部实现一个字典,这样您就可以公开一个

FindUser(userID)

在未找到 userID 时返回 null 的方法。你的循环不能很好地扩展。

Is _database a repository? If so, I would suggest implementing a dictionary internally so you can expose a

FindUser(userID)

method which returns null if userID is not found. Your loop won't scale well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文