此代码是我正在尝试做的简化版本:
string day = Thursday;
DateTime dt = DateTime.Now;
if (day == dt.DayOfWeek)
{
// start the program
}
我需要从数据库中读取星期值,将其分配给字符串,然后将字符串与dt.DayOfWeek进行比较以检查程序是否应该执行。
我的错误是:“运算符'=='无法应用于'string'和'System.DayOfWeek'类型的操作数
任何人都知道如何将字符串与DateTime.DayOfWeek值进行比较?
答案 0 :(得分:11)
最简单的方法是将枚举转换为字符串:
if (day == dt.DayOfWeek.ToString())...
注意:
day
的类型更改为DayOfWeek
枚举,则可以避免字符串比较(及其相关的本地化/比较问题)。DayOfWeek.Thursday
)并使用相应的String.Equals
方法。Parse
将字符串转换为枚举,如其他答案所示:((DayOfWeek)Enum.Parse(typeof(DayOfWeek), day)
答案 1 :(得分:10)
使用Enum.Parse
获取枚举值:
if ((DayOfWeek)Enum.Parse(typeof(DayOfWeek), day) == dt.DayOfWeek)
如果您不确定它是否为有效值,则为TryParse<T>
:
Enum val;
if (Enum.TryParse<DayOfWeek>(day, out val) && val == dt.DayOfWeek)
答案 2 :(得分:3)
尝试DayOfWeek day = DayOfWeek.Thursday;
答案 3 :(得分:2)
您可以使用Enum.TryParse<DayOfWeek>
:
string strDay = "Wednesday";
DayOfWeek day;
if (Enum.TryParse<DayOfWeek>(strDay, out day)
&& day == DateTime.Today.DayOfWeek)
{
// ...
}