c# - LINQ 和唯一 ID

标签 c# .net linq extension-methods

我编写了一些 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<TSource>()扩展方法:

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

这是使用lambda来表达这一点的另一种方式。 :

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

请注意 equals operator on the String class将进行区分大小写的顺序比较。如果您希望进行不区分大小写的比较,则必须使用 String.Equals方法:

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

关于c# - LINQ 和唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5565723/

相关文章:

c# - 代码优先 EF : While searching database table is it possible to retrieve list of items it has in DataModel?

C# 任务在using block中的返回方法

c# - 在 Windows 中查询用户 session

c# - 调试 TargetInvocationException

.net - 针对数据库表实现具有多个可选参数的搜索功能

c# - preg_match 到 .NET 等价物

c# - 这只能用 c# linq 来完成吗

c# - 如何左连接两个数据表?

c# - 如何在 C# 中使用 Bogus 库生成字符串列表?

c# - 集合论 : Maximum orders limited items