我有一個列舉 WeekDays,頂部有 Flag 屬性,
[Flags]
public enum WeekDays
{
None = 0,
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
}
我想將此列舉用作另一個模型中的串列。我面臨的問題是在將列舉串列從 FE 映射到映射到 int 變數以存盤在資料庫列中時。我不知道該怎么做。到目前為止我正在嘗試什么:
int daysBit;
var settings = await _globalContext.settingsModel.SingleOrDefaultAsync(x => x.id == request.id);
if (adminEmailSettingsFromDb == null)
{
foreach (var day in request.DaysOfWeek)
{
daysBit |= (day)WeekDays;
}
var exampleVariable = new settingsModel
{
DaysOfWeek = daysBit,
CreatedAt = DateTime.UtcNow,
UpdatedAt = DateTime.UtcNow
};
}
uj5u.com熱心網友回復:
您可以使用 Linq Aggregate 制作單線:
var dayBit = request.DaysOfWeek.Aggregate(WeekDays.None, (a, b) => a|b);
反過來:
public static IEnumerable<WeekDays> GetFlagList(WeekDays days)
{
var all = Enum.GetValues<WeekDays>();
foreach (var value in all)
{
if ((days & value) == value)
{
yield return value;
}
}
}
uj5u.com熱心網友回復:
所以我所做的就是解決這個問題,在上面的代碼中
WeekDays daysBit=WeekDays.None;
foreach (var day in request.DaysOfWeek)
{
daysBit |= day;
}
剛剛更新了這兩行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/530786.html
