0

我有这个 sql 语句:

SELECT QuestionNo, ActivityID, GROUP_CONCAT(CONCAT(Question, ' [',
Answer, ']') SEPARATOR ' ') AS join from question GROUP BY
QuestionNo, ActivityID OrderBy questionHintID

我需要在 linq lambda 中拥有它,到目前为止我所拥有的是

 IList<QuestionHint> lstRecords = context.questionhints.GroupBy(x => new { x.QuestionNo, x.ActivityID, x.TaskID }).ToList().Select(g => new QuestionHint()
        {
            QuestionNo = g.Key.QuestionNo,
            ActivityID = g.Key.ActivityID,
            TaskID = g.Key.TaskID,
            joined = String.Join(" ",
                    g.Select(i => i.QuestionContent + "[" + i.Answer + "]")),
            joinOption = String.Join(" ",
                   g.Select(a => "[" + a.Option1 + "," + a.Option2 + "]"))

        }).Where(x => x.TaskID == listTask && x.ActivityID == listActivity)
            //.Take(50)
           .ToList();

        return lstRecords;

如何在 Orderby 中添加?因为当我在查询中使用连接时,检索到的记录是乱序的,因为不能保证顺序是有序的,如何将 OrderBy questionHintID(表的主键)添加到上面的 lambda 中?

4

2 回答 2

0

我想我明白你的意思。它可能应该是这样的:(注意OrderBy语句)

var lstRecords = context.questionhints
.Where(x => x.TaskID == listTask && x.ActivityID == listActivity)
.GroupBy(x => new { x.QuestionNo, x.ActivityID, x.TaskID })
.AsEnumerable()
.Select(g => new QuestionHint()
        {
            QuestionNo = g.Key.QuestionNo,
            ActivityID = g.Key.ActivityID,
            TaskID = g.Key.TaskID,
            joined = String.Join(" ",
                       g.OrderBy(q => q.questionHintID)
                        .Select(i => i.QuestionContent + "[" + i.Answer + "]")),
            joinOption = String.Join(" ",
                       g.OrderBy(q => q.questionHintID)
                        .Select(a => "[" + a.Option1 + "," + a.Option2 + "]"))

        })
于 2013-07-05T14:21:24.510 回答
0

您是否尝试过 .OrderByDescending(questionhints => questionhint.ID)?希望这可以帮助!!

于 2013-07-04T03:50:26.190 回答