使用DataTable在DataGridView中显示LINQ查询结果

时间:2013-03-04 21:49:01

标签: asp.net entity-framework linq datatable

我有一个包含LINQ查询的函数,并将结果作为DataTable返回。我在使用返回的DataTable填充DataGridView时遇到了麻烦。查询应该返回一些数据,但表看起来是空的。我的功能如下:

public static DataTable GetEmployeeTimesheets(int employeeId)
{
    DataTable table = new DataTable();

    using (PTMS_DataEntities entities = new PTMS_DataEntities())
    {
        var timesheets = from timesheet in entities.Timesheets
                         join timesheetTask in entities.Timesheet_Task
                         on timesheet.Id equals timesheetTask.Timesheet_Id
                         join task in entities.Tasks
                         on timesheetTask.Task_Id equals task.Id
                         join project in entities.Projects
                         on task.Project_Id equals project.Id
                         join department in entities.Departments
                         on project.Department_Id equals department.Id
                         where timesheet.Employee_Id == employeeId
                         select new
                         {
                             date = timesheet.Date,
                             taskName = task.Name,
                             projectName = project.Name,
                             projectDesc = project.Description,
                             departmentName = department.Name,
                             taskEstimatedHours = task.Estimated_Hours,
                             timesheetHours = timesheetTask.Hours
                         };

        table.Columns.Add("date");
        table.Columns.Add("taskName");
        table.Columns.Add("projectName");
        table.Columns.Add("projectDesc");
        table.Columns.Add("departmentName");
        table.Columns.Add("taskEstimatedHours");
        table.Columns.Add("timesheetHours");

        foreach (var item in timesheets)
        {
            table.Rows.Add(item.date, item.taskName, item.projectName,
                item.projectDesc, item.departmentName, item.taskEstimatedHours,
                item.timesheetHours);
        }
    }

    return table;
}

填充DataGridView的代码如下:

    TimesheetGrid.DataSource = EmployeeManager.GetEmployeeTimesheets(employeeId);
    TimesheetGrid.DataBind();  

我在函数/ LINQ查询本身做错了什么,或者我只是没有正确填充DataGridView?

0 个答案:

没有答案