Linq to sql 之 ExecuteQuery 错误:指定的转换无效

问题:通过dbContext.ExecuteQuery 得到数据并赋值给一个集合.

代码:

 public IEnumerable<LeaveCodeSum> GetLeavTotal(string staffno,DateTime startDate,DateTime endDate)
        {
            string sql = @"SELECT RTRIM(LEAcode.Leave_Code) AS LeaveCode, RTRIM(LEAcode.Description) AS LeaveCodeName,ISNULL(T1.Total, 0) AS TotalNumber, 
                           RTRIM(PERempms.Staff_No) AS StaffNo, '{1}' AS StartDate, convert(datetime,'2013-11-01') AS EndDate FROM LEAcode 
                           LEFT OUTER JOIN PERempms ON LEAcode.Leave_Policy = PERempms.Leave_Policy 
                           LEFT OUTER JOIN (SELECT Leave_Code, SUM(Total_no_of_days) AS Total FROM LEAtrans 
                           WHERE (Staff_No = '{0}') AND (Start_date >= '{1}') AND (Start_date <= '{2}') GROUP BY Leave_Code) 
                           AS T1 ON T1.Leave_Code = LEAcode.Leave_Code WHERE (PERempms.Staff_No = '{0}')";

            sql = string.Format(sql, staffno, startDate, endDate);
            IEnumerable<LeaveCodeSum> d = dbHr.ExecuteQuery<LeaveCodeSum>(sql);

            return d ;
           
        }


要点:查询出的字段必须和LeaveCodeSum类的属性相同.

运行后报错:指定的转换无效.

原因是:LeaveCodeSum的StartDate是DataTime类型.

解决办法:

1:修改StartDate类型为String类型(变通的方法)

2: convert(datetime, '{1}') AS StartDate(用Convert把string 转成datetime)