2013-02-05 44 views
0

檢查此代碼Sniplet了。Enum.ToString不工作

using (AttendanceDataContext db = new AttendanceDataContext()) 
{ 
var attendance = db.attendpunches.Select(at => new RawEmployeeCheckInOutInfo 
        { 
         CheckTime = at.punchtime.Value, 
         Direction = ((AttendanceDirection)at.direction.Value).ToString() 
        }); 

...

AttendanceDirection是枚舉哪個...

public enum AttendanceDirection : int 
{ 
    CheckIn = 1, 
    CheckOut = 2 
} 

的問題是方向=((AttendanceDirection)at.direction.Value)的ToString()是總是返回字節值。

+0

你在DB中有什麼樣的列類型?什麼類型是'at.direction.Value'? – jgauffin

+0

當您刪除該行中的'.Value'部分會發生什麼? –

+0

數據類型的方向是int,同樣的事情發生在我刪除.value時,任何方式「Jon Skeet」都解決了我的問題。 – Teddy

回答

4

我懷疑問題是ToString正在數據庫端有效地執行,它不知道枚舉名稱。試試這個:

var attendance = db.attendpunches 
        .Select(at => new { CheckTime = at.punchtime.Value, 
             Direction = at.direction.Value }) 
        .AsEnumerable() // Do the rest of the query in-process... 
        .Select(at => new RawEmployeeCheckInOutInfo { 
         CheckTime = at.CheckTime, 
         Direction = ((AttendanceDirection) at.Direction).ToString() 
        }); 
+0

工作,謝謝你! – Teddy