在构建我的应用程序时,我陷入了一个愚蠢的步骤。
我对 linq 2 sql 有一个简单的查询:
var recipients = cdc.Recipients.Where(r => r.Owner == Sanitize.SanitizeUserName(context.User.Identity.Name) && r.Enabled == true && (r.DisplayName.Contains(qs) || r.EmailAddress.Contains(qs)))
.Select(r => new NVC { name = r.DisplayName, value = r.EmailAddress }).ToList();
它将一些数据带到收件人的表中并放在自定义类中。这里一切顺利。
我需要在 where 子句上添加一个额外的过滤器来检查电子邮件地址是否有效。
我尝试了一个简单的函数,但在使用它时抛出了“无 sql 翻译”异常。
通过互联网挖掘,我发现我必须使用扩展方法,所以我最终构建了这个:
public static Expression<Func<string, bool>> IsSaneEmail = y => (!string.IsNullOrEmpty(y) && Regex.IsMatch(y, emailPattern));
(其中 emailPattern 是一个正则表达式字符串)
但是如何应用于我的查询?我试图添加 where 子句
... && IsSaneEmail(r.emailAddress) && ...
或者
... && r.EmailAddress.IsSaneEmail() && ...
没有运气。
我知道我很笨 但请帮帮我