Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linq查询帮助,在连接多个查询时出现的跳过和执行问题_Linq_Linq To Sql_C# 3.0 - Fatal编程技术网

linq查询帮助,在连接多个查询时出现的跳过和执行问题

linq查询帮助,在连接多个查询时出现的跳过和执行问题,linq,linq-to-sql,c#-3.0,Linq,Linq To Sql,C# 3.0,我想在我的主屏幕上抛出一堆通知,但是我使用分页来确保我不会在内存中包含可能有数千个结果的2、3或4+查询。我在写这个问题上有点困难,如果有任何指导,我将不胜感激 域模型:我有一堆报告,你可以创建/关闭报告,创建任务,并对所有与报告相关的任务进行评论 我的查询需要发送: 根据创建日期创建的所有新报告 根据关闭日期关闭所有报告 在此报表任务管理器上创建的所有新任务都有助于跟踪发生的事情 对任务的所有最新评论 到目前为止,我的代码是: [NonAction] private IList<Noti

我想在我的主屏幕上抛出一堆通知,但是我使用分页来确保我不会在内存中包含可能有数千个结果的2、3或4+查询。我在写这个问题上有点困难,如果有任何指导,我将不胜感激

域模型:我有一堆报告,你可以创建/关闭报告,创建任务,并对所有与报告相关的任务进行评论

我的查询需要发送:

根据创建日期创建的所有新报告 根据关闭日期关闭所有报告 在此报表任务管理器上创建的所有新任务都有助于跟踪发生的事情 对任务的所有最新评论 到目前为止,我的代码是:

[NonAction]
private IList<NotifcationDTO> GetNotifications(LoggedonuserDTO loggedonuser, int skip, int take)
{

  var allreports = _repo.All<Report>();

  var alltasks = _repo.All<ReportTask>().Join(allreports ,
                       x => x.ReportID, y => y.ReportID, (_task, _report) =>
                       new
                       {
                          _report,
                          _task
                        })
                       .Where(x => x._task.CompanyID == loggedonuser.CompanyID || x._task.AssignedToCompanyID == loggedonuser.CompanyID);

  var _companies = _repo.All<Company>();
  var _users = _repo.All<User>();

  var _activities = alltasks.OrderByDescending(o => o._task.DateCreated)
                    .Select(x => new NotifcationDTO
                    {
                      Title = x._report.SubjectPropertyAddress1,
                      MessageID = x._report.ReportID,
                      NotificationType = NotificationType.NewTask.ToString(),
                      Comment = x._task.Title,
                      Importance = Importance.Medium.ToString(),
                      Timestamp = x._task.DateCreated,
                      UserFriendlyName = _users.Where(y => y.UserID == x._task.UserID).FirstOrDefault().Login,
                      EntityFriendlyName = _companies.Where(y => y.CompanyID == x._task.CompanyID).FirstOrDefault().Identifier
                    });

   return _activities.Skip(skip).Take(take).ToList();
//更新-查询到concat到


只要您使用的所有集合都是可访问的,它们就会被转换为SQL,并且不会进行内存中的连接。您可以使用类似的工具查看生成的相应SQL。

您的代码有什么问题?编写查询时,您需要什么帮助?你哪里有问题?我已经添加了上面的第二个查询,基本上我想对这两个查询进行解析,记住分页,我不想在内存中进行解析…或者,有没有更好的方法来获取我上面列出的4种不同类型的通知?而不是在一个方法中完成所有工作,然后一次将其发送到我的视图中?有意义吗?我刚刚意识到我可以执行concat,而查询不在内存中,我的分页保持不变:p-return\u newtasks.concat\u taskcomments.Skipskip.Taketake.OrderByx=>x.Timestamp.ToList;
var comments = _repo.All<InstructionTaskComment>();

var _taskcomments = alltasks
                            .Join(comments, x => x._task.TaskID, y => y.TaskID, (_task, _comment) => new
                            {
                                _task,
                                _comment
                            })
                            .OrderByDescending(o => o._comment.Timestamp)
            .Select(x => new NotifcationDTO
            {
                Title = x._task._report.SubjectPropertyAddress1,
                MessageID = x._task._report.ReportID,
                NotificationType = NotificationType.Comment.ToString(),
                Comment = x._comment.Comment,
                Importance = Importance.Low.ToString(),
                Timestamp = x._comment.Timestamp,
                UserFriendlyName = _users.Where(y => y.UserID == x._comment.UserID).FirstOrDefault().Login,
                EntityFriendlyName = _companies.Where(y => y.CompanyID == x._comment.CompanyID).FirstOrDefault().Identifier
            });
}