我想检查用户输入的电子邮件是否已经存在于 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/