我有这个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中?
答案 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 + "]"))
})