首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到分组查询

连接到分组查询
EN

Stack Overflow用户
提问于 2012-12-29 06:25:35
回答 1查看 75关注 0票数 2

我是一个LINQ Newb,我有这个查询,它返回调查中的页面。(无论出于何种原因,这些值都不会具体化到表中。)

代码语言:javascript
复制
//Group all of this data by page 
var pages = from fq in db.FormQuestions
        where (fq.FormId == id) && fq.Disabled == false
        group fq by fq.PageNumber into p
        select new DTOs.PageDTO { PageNumber = p.Key.Value };

然后我有这个查询,它将所有叶数据投影到DTO中。

代码语言:javascript
复制
var questions = from fq in db.FormQuestions
   join q in db.Questions on fq.QuestionId equals q.QuestionId
   where (fq.FormId == id) && fq.Disabled == false
   //where (fq.FormId == id) && fq.Disabled == false && fq.PageNumber == page
   orderby fq.DisplayOrder
   select new DTOs.FormQuestionDTO()
   {
       DisplayOrder = (fq.DisplayOrder.HasValue ? fq.DisplayOrder.Value : 0),
       PageNumber = (fq.PageNumber.HasValue ? fq.PageNumber.Value : 0),
       QuestionId = q.QuestionId,
       QuestionSelectionMode = q.vts_tbQuestionSelectionMode.Description,
       QuestionText = q.QuestionText,
       Answers =
           from answer in q.Answers
           join at in db.AnswerTypes on answer.AnswerTypeId equals at.AnswerTypeID
           where answer.Disabled == false
           orderby answer.DisplayOrder
           select new DTOs.AnswerDTO()
           {
               AnswerId = answer.AnswerId,
               AnswerText = answer.AnswerText,
               DisplayOrder = answer.DisplayOrder,
               AnswerType = at.Description
           }
   };

有没有一种方法可以很好地把这两个结合起来?也就是说,在每个页面DTO下,我希望看到QUestion DTO,然后在该答案DTO内,然后继续...

此外,即使我可以在一条LINQ语句中完成所有这些工作,是否更可取的做法是单独构建LINQ语句,然后将它们合并?这感觉有点像在SQL中构建临时变量,因为它可能构建一个巨大的查询,但维护起来很痛苦。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-30 07:26:00

那么为什么像这样的东西不能工作呢?

代码语言:javascript
复制
//Group all of this data by page 
var pages = from fq in db.FormQuestions
        where (fq.FormId == id) && fq.Disabled == false
        group fq by fq.PageNumber into p
        select new DTOs.PageDTO { 
          PageNumber = p.Key.Value 
          questions = from fq in db.FormQuestions
                     join q in db.Questions on fq.QuestionId equals q.QuestionId
                     where (fq.FormId == id) && fq.Disabled == false
                     orderby fq.DisplayOrder
                     select new DTOs.FormQuestionDTO()
                     {
                       DisplayOrder = (fq.DisplayOrder.HasValue ? fq.DisplayOrder.Value : 0),
                       // etc as you 2nd code sample
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14076553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档