アプリケーションをビルドするときに、愚かなステップで立ち往生しています。
私は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」例外がスローされました。
インターウェブを掘り下げると、拡張メソッドを使用する必要があることがわかったので、最終的にこれを構築します。
public static Expression<Func<string, bool>> IsSaneEmail = y => (!string.IsNullOrEmpty(y) && Regex.IsMatch(y, emailPattern));
(ここで、emailPattern は正規表現文字列です)
しかし、私のクエリに適用するにはどうすればよいですか? where句を追加しようとしました
... && IsSaneEmail(r.emailAddress) && ...
また
... && r.EmailAddress.IsSaneEmail() && ...
運がない。
私は私が愚かであることを知っていますが、私を助けてください