2011-02-24 75 views
1

嗨 我想创建一个这样的表的查询: 1.i有一个多重的问题,我想统计每个响应的数量每个回答多个问题的结果,并将它们显示在如下格式的查询中: 1.ID 2.问题短语3.q1 4.q2 5.q3 6.q4 7.count1 8.count2 9.count3 10.count4 i已经创建了一个LINQ查询像这样的是答案表之后,我可以用ID来问表加入这些并获得短语等:如何使一个linq查询像一个平坦的表

var q4 = (from x in LinqDB.PTAs 
      where x.PTID == int.Parse(DropDownListPeriodID.SelectedValue) && 
        x.PTUser.PTUserID >= ID1 && x.PTUser.PTUserID <= ID2 
      group x by x.PTQID into GRPA //& x.PTAID 
      select new { 
       GRPA.Key, 
       A1=(
        from f in GRPA 
        group f by f.Answer into FG 
        select FG.Count() 
        )}); 

但它给了我不的第二层w^

var Q = from x in LinqDB.PTAs 
      where x.PTID == int.Parse(DropDownListPeriodID.SelectedValue) && 
        x.PTUser.PTUserID >= ID1 && x.PTUser.PTUserID <= ID2 
      group x by new { x.PTQID, x.Answer } into gr 
      select new {gr.Key.PTQID,gr.Key.Answer,A1=gr.Count() }; 

因此任何建议,这个或可能改变第二查询在后处理中,因此它可以像我的格式:格式 我想这蚂蚁becouse? Thx为您的答案。

回答

0
//process user input before going into the database. 
int selectedID = int.Parse(DropDownListPeriodID.SelectedValue); 

    //go to the database and get the data. 
List<PTA> records = 
(
    from x in LinqDB.PTAs 
    where x.PTID == selectedID 
    && ID1 <= x.PTUser.PTUserID && x.PTUser.PTUserID <= ID2 
    select x 
).ToList(); 

// group up the data for presentation.  
var questions = 
    from x in records 
    group x by new {x.PTQID, x.Answer} into g1 
    group g1 by g1.Key.PTQID into g2 
    select new 
    { 
    PTQID = g2.Key, 
    Answers = 
     from y in g2 
     select new 
     { 
     Answer = y.Key.Answer, 
     AnswerCount = y.Count() 
     } 
    }; 

// group up the data for presentation. 
    var questions = 
    from x in records 
    group x by x.PTQID into g 
    let answers = g.GroupBy(y => y.Answer) 
    let answer1 = answers.First() 
    let answer2 = answers.Skip(1).First() 
    let answer3 = answers.Skip(2).First() 
    let answer4 = answers.Skip(3).First() 
    select new 
    { 
    PTQID = g.Key, 
    Answer1 = answer1.Key, 
    Answer1Count = answer1.Count(), 
    Answer2 = answer1.Key, 
    Answer2Count = answer1.Count(), 
    Answer3 = answer1.Key, 
    Answer3Count = answer1.Count(), 
    Answer4 = answer1.Key, 
    Answer4Count = answer1.Count(), 
    }; 
+0

您好大卫乙感谢您的答复。但你发送的查询给出了3层不是1.i说,我希望它是这样的格式因为我想发送这个在水晶报告源,它不能识别超过1 layer.i上传的图像第一个查询是2层,第二个查询是1层。 – user629436 2011-02-25 04:58:53

+0

http://imgbot.com/images/59318563781857354819.jpg http://imgbot.com/images/71394487961413797036.jpg – user629436 2011-02-25 04:59:37

+0

它应该像第二个单独的图像,一切都在一张平坦的桌子上,就像结果一样,所以它应该只是在调试模式下给出一个RESULT VIEW,并且不会再有。非常多的thx。 – user629436 2011-02-25 05:02:50