構建我的應用程序時,我困在一個愚蠢的步驟中。Linq 2 SQL和自定義擴展方法
我對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子句中添加一個額外的過濾器來檢查電子郵件地址是否有效。
我嘗試了一個簡單的函數,但它在使用它時拋出了「no sql translation」異常。
挖通我發現,我必須使用擴展方法,所以我最終建立這個interwebs:
public static Expression<Func<string, bool>> IsSaneEmail = y => (!string.IsNullOrEmpty(y) && Regex.IsMatch(y, emailPattern));
(其中emailPattern是一個正則表達式的字符串)
但如何應用到我的查詢?我試圖在沒有運氣的where子句
... && IsSaneEmail(r.emailAddress) && ...
或
... && r.EmailAddress.IsSaneEmail() && ...
補充。
我知道我是愚蠢的,但幫我
不,還是一樣的「沒有sql翻譯」異常。 – Valerio
在這種情況下,我想你需要使用例如ToList()然後過濾它... – silvo
是的,這是一個想法,但大集合呢?這將是無效的 – Valerio