tôi về cơ bản có một enumLINQ & Enums như IQueryable
public enum WorkingDays
{
Monday, Tuesday, Wednesday, Thursday, Friday
}
và muốn làm một so sánh với một đầu vào, mà sẽ xảy ra là một chuỗi
//note lower case
string input = "monday";
Điều tốt nhất tôi có thể đến lên với một cái gì đó như thế này
WorkingDays day = (from d in Enum.GetValues(typeof(WorkingDays)).Cast<WorkingDays>()
where d.ToString().ToLowerInvariant() == input.ToLowerInvariant()
select d).FirstOrDefault();
Có cách nào tốt hơn để làm điều đó?
Chỉnh sửa: Cảm ơn Aaron & Jason. Nhưng nếu phân tích cú pháp thất bại thì sao?
if(Enum.IsDefined(typeof(WorkingDay),input))//cannot compare if case is different
{
WorkingDay day = (WorkingDay)Enum.Parse(typeof(WorkingDay), input, true);
Console.WriteLine(day);
}
Xem http://msdn.microsoft.com/en-us/library/kxydatf9.aspx cho trường hợp ngoại lệ có thể được ném. – dugas