Linq集团由并选择

时间:2015-08-03 08:10:41

标签: c# asp.net-mvc database linq

我有* .cs模型

public class TimesheetListModel
    {
        public string ProjectName { get; set; }
        public DateTime TaskDate { get; set; }
        public string Task { get; set; }
        public decimal TimeWorked { get; set; }
        public string Note { get; set; }
    }

我有服务,从数据库中选择我的模型。

现在我需要将我的模型包含在List<>中新模式:

 public class TimesheetModel
    {
        public DateTime TaskDate { get; set; }
        public List<TimesheetListModel> TimesheetList { get; set; }

        public TimesheetModel() { TimesheetList = new List<TimesheetListModel>(); }
    }

我需要从db为新模型选择数据,并在新模型中按TaskDate分组。我有服务实现这个查询,但它写的旧模型:

public IEnumerable<TimesheetListModel> GetTicketsInProgressByUserId(int id)
{
    var query = (from workLogList in DataContext.tblWorkLogs
                 join tickets in DataContext.tblTickets on workLogList.TicketId equals tickets.TicketId
                 join project in DataContext.tblProjects on tickets.ProjectId equals project.ProjectId
                 join states  in DataContext.tblWorkflowStates on tickets.Status equals states.StateId
                 where workLogList.AccountId == id
                 select new TimesheetListModel
                 {
                     ProjectName = project.Name,
                     TaskDate = workLogList.WorkDate,
                     Task = "#" + tickets.TicketId + " : " +  tickets.Title,
                     TimeWorked = workLogList.TimeWorked,
                     Note = workLogList.Note
                 });
    return query.ToList();
}

我需要如何重写查询以选择新模型的数据?

1 个答案:

答案 0 :(得分:2)

你可以这样做: -

where workLogList.AccountId == id
group workLogList by workLogList.WorkDate into g
select new TimesheetModel
      {
          TaskDate = g.Key,
          TimesheetList = g.ToList()
      });