Linq to sql LINQ连接和组

Linq to sql LINQ连接和组,linq-to-sql,join,group-by,Linq To Sql,Join,Group By,如何展开此查询: public Dictionary<int, List<TasksInDeal>> FindAllCreatedTasks() { return (from taskInDeal in db.TasksInDeals where taskInDeal.Date > DateTime.Now && taskInDeal.Date < DateTime.Now.AddDays(7)

如何展开此查询:

public Dictionary<int, List<TasksInDeal>> FindAllCreatedTasks()
{
    return (from taskInDeal in db.TasksInDeals
            where taskInDeal.Date > DateTime.Now && taskInDeal.Date < DateTime.Now.AddDays(7)
            group taskInDeal by taskInDeal.CreatedByUserID
                into groupedDemoClasses
                select groupedDemoClasses).ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
}
公共字典FindAllCreatedTasks()
{
返回(来自db.TasksInDeals中的taskInDeal)
其中taskInDeal.Date>DateTime.Now&&taskInDeal.Dategdc.Key,gdc=>gdc.ToList());
}
变成这样:

public Dictionary<int, List<TaskForNotification>> FindAllCreatedTasks()
{
    return (from taskInDeal in db.TasksInDeals
            join user in db.Users on taskInDeal.CreatedByUserID equals user.UserID
            where taskInDeal.Date > DateTime.Now && taskInDeal.Date < DateTime.Now.AddDays(7)
            group taskInDeal by taskInDeal.CreatedByUserID
                into groupedDemoClasses
                select new TaskForNotification 
                { 
                    Email = user.Email,
                    TaskInDealField1 = taskInDeal.TaskInDealField1,
                    TaskInDealField2 = taskInDeal.TaskInDealField2,
                    TaskInDealField3 = taskInDeal.TaskInDealField3,
                    ...
                }
                ).ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
}
公共字典FindAllCreatedTasks()
{
返回(来自db.TasksInDeals中的taskInDeal)
在数据库中加入用户。taskInDeal.CreatedByUserID上的用户等于user.UserID
其中taskInDeal.Date>DateTime.Now&&taskInDeal.Dategdc.Key,gdc=>gdc.ToList());
}
因此,要进行第一次查询,我需要加入来自其他表的电子邮件。

//预先执行日期逻辑,而不是在数据库中。
  // do the date logic up front, not in the database.
DateTime now = DateTime.Now
DateTime weekFromNow = now.AddDays(7);

  // pull the joined rows out of the database.
var rows =
(
  from taskInDeal in db.TasksInDeals
  where taskInDeal.Date > now && taskInDeal.Date < weekFromNow
  join user in db.Users
    on taskInDeal.CreatedByUserID equals user.UserID
  select new {TaskInDeal = taskInDeal, UserEmail = user.Email}
).ToList();

  // shape the rows in memory
Dictionary<int, List<TaskForNotification>> result =
(
  from row in rows
  let taskForNotification = new TaskForNotification  
  {  
    Email = row.UserEmail, 
    TaskInDealField1 = row.TaskInDeal.TaskInDealField1, 
    TaskInDealField2 = row.TaskInDeal.TaskInDealField2, 
    TaskInDealField3 = row.TaskInDeal.TaskInDealField3, 
    ... 
  }
  group taskForNotification by row.TaskInDeal.CreatedByUserID
  // without an "into", group by ends the query.
).ToDictionary(g => g.Key, g => g.ToList()); 
DateTime now=DateTime.now DateTime weekFromNow=now.AddDays(7); //将连接的行从数据库中拉出。 变量行= ( 来自db.TasksInDeals中的taskInDeal 其中taskInDeal.Date>now&&taskInDeal.Dateg.Key,g=>g.ToList());
分组时,请记住这一点。SQL中的组只有键和聚合。LINQ中的组具有键、聚合和元素!如果您向数据库请求组,然后请求元素,那么SQL无法在单个查询中为您提供这些元素。您将使用组键作为筛选器自动重复查询。

//预先执行日期逻辑,而不是在数据库中。
DateTime now=DateTime.now
DateTime weekFromNow=now.AddDays(7);
//将连接的行从数据库中拉出。
变量行=
(
来自db.TasksInDeals中的taskInDeal
其中taskInDeal.Date>now&&taskInDeal.Dateg.Key,g=>g.ToList());

分组时,请记住这一点。SQL中的组只有键和聚合。LINQ中的组具有键、聚合和元素!如果您向数据库请求组,然后请求元素,那么SQL无法在单个查询中为您提供这些元素。您将使用组键作为筛选器自动重复查询。

简单问题-难以置信它已被保留了5个小时。简单问题-难以置信它已被保留了5个小时。