4

私は列挙型を持っています:

[Flags]
public enum EmailType
{
    PasswordRecovery = 1,
    Activation = 2,
    SendTicket = 4
}

たとえば、テーブルでは、値が 3 に等しい場合、- PasswordRecovery,を意味しActivationます。これは私のクエリです:

var emailType = EmailType.PasswordRecovery;
return Database.EmailSettings.FirstOrDefault(es => es.EmailType ==  (int)emailType);

もちろん、このクエリは正しく機能しません: 3 == 1 => false. 適切にフィルタリングする方法は?
ありがとう。

更新:Flags XAF (devexpress フレームワーク) で記述されたアプリケーションがもう 1 つあり、属性を必要とする UI の機能が 1 つあるため、属性 を使用していFlagsます。

4

3 に答える 3

4
int emailType = (int)EmailType.PasswordRecovery;
return Database.EmailSettings.FirstOrDefault(es => (es.EmailType & emailType) == emailType);

編集:es.EmailType is および であるため、キャストを追加しましたint

于 2012-06-20T08:31:59.973 に答える
2
Database.EmailSettings.FirstOrDefault(
    es => es.EmailType.HasFlag(EmailType.PasswordRecovery));
于 2012-06-20T08:34:29.233 に答える
0

EmailType == 3はあなたの条件の一つだと思いますか?おそらく、最初に他の条件を使用して結果を取得し、次にEnum.HasFlagメソッドを使用して C# コードでこの条件でフィルター処理できます。これがクエリする唯一の条件である場合は、「3」の代わりに「1,2」を DB に格納できます。

于 2012-06-20T08:35:41.760 に答える