SQL语句到linq lambda Orderby

时间:2013-07-04 03:41:27

标签: c# mysql sql linq lambda

我有这个sql语句:

  

SELECT QuestionNo,ActivityID,GROUP_CONCAT(CONCAT(问题,'[',
  答案,']')分离器'')AS从问题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?因为当我在查询中使用join时,检索的记录是乱序的,因为订单不能保证顺序如何将OrderBy questionHintID(表的主键)添加到上面的lambda中?

2 个答案:

答案 0 :(得分:0)

您是否尝试过.OrderByDescending(questionhints =&gt; questionhint.ID)?希望这会有所帮助!!

答案 1 :(得分: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 + "]"))

        })