c# - 检查字符串是否已存在于表中

标签 c# linq

我想检查用户输入的电子邮件是否已经存在于 Office 表中,看看我到目前为止所做的事情,问题是 officeEmail 始终为真,即使输入电子邮件不存在,它永远不会返回 NULL

public static bool IsOfficeEmail(string email)
{

    using (var data = Database)
    {
        data.ObjectTrackingEnabled = false;
        var officeEmail = data.Offices.Where(a => a.Active && a.Email.Equals(email));

        if (officeEmail != null)                
            return true;
    }

    return false;
}

最佳答案

Where不会返回 null,而是空序列,将其更改为:

var officeEmail = data.Offices.FirstOrDefault(a => a.Active && a.Email.Equals(email));

if (officeEmail != null)                
    return true;

FirstOrDefault将返回默认值(这里为 null)它不会找到查询的值。

可以选择使用Any如果您对电子邮件记录不感兴趣:

public static bool IsOfficeEmail(string email)
{
    using (var data = Database)
    {
        return data.Offices.Any(a => a.Active && a.Email.Equals(email))
    }
}

如果您无论如何都不会使用它,您将不会获得电子邮件记录。您应该使用哪种方法取决于您将如何处理 officeEmail,如果您只是查询它是否存在 -> Any 将是此处的最佳方法。如果您想检查现有记录并对其进行处理,FirstOrDefault 会更好。

关于c# - 检查字符串是否已存在于表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231630/

相关文章:

c# - 您如何发现 TCPListener 服务的 IP 地址?

c# - 升序排列

c# - Linq 和 IEnumerable 惰性查询。效率损失?

.net - 如何从 vb.net 中的列表中获取重复项

C# - 通用操作?

c# - 字符串 s[s.Length-1] 与 s.Last()

c# - 单击未调用的 UICollectionViewCell 中的特定元素(而不是从源中触发的 ItemSelected)Xamarin.ios

c# - 消除 LET 运算符和 SqlFunctions

c# - 查询到列表的转换非常慢

c# - 如何在 linq 查询中使用子字符串?