【发布时间】:2018-01-16 02:24:52
【问题描述】:
我有一个带有 event 表的 SQLite 数据库,该表由四列组成:id (INT)、timestamp (TEXT)、level (TEXT) 和 message (TEXT)。当我读回事件时,我想将 level 值转换为相应的 LogLevel 枚举值。文本值与枚举成员名称相同。我怎样才能做到这一点?我看到如果我使用Query<object>,我会得到一个列表,我可以在其中枚举所有行并将它们转换为新的Event 结构值之前。但这是最好/最简单的方法吗?
public struct Event
{
public Event(DateTime timestamp, LogLevel level, string message)
{
Timestamp = timestamp;
Level = level;
Message = message;
}
public DateTime Timestamp { get; }
public LogLevel Level { get; }
public string Message { get; }
}
public enum LogLevel
{
FATAL,
ERROR,
WARN,
INFO
}
public List<Event> GetNewEvents(uint rowId)
{
var events = _dbConnection.Query<Event>("SELECT * FROM events WHERE id >= @RowId;", new { RowId = rowId });
return events.ToList();
}
【问题讨论】: