我有一个带有gridview的vb.net网站,当前在每行中垂直显示考试题,如下所示:
Name question answer
-----------------------
Joe question1 answer1
Joe question2 answer2
Joe question3 answer3
Jill question1 answer1
Jill question2 answer2
Jill question3 answer3
但我想更改它,以便每个问题都是标题,如下所示:
Name question1 question2 question3
----------------------------------
Joe answer1 answer2 answer3
Jill answer1 answer2 answer3
由于每个用户仅列出一次,因此它更具可读性。
我花了大部分时间在早上搜寻解决方案,但实际上找不到任何有效的方法。
我想坚持使用gridview而不是重写所有代码。
有没有人有什么建议?
我实际上是通过其他一些程序员类将数据绑定到gridview。我正在像这样使用LINQ:
Return (From entry In report.FetchAllEntries()
Select questionID = entry.Question.QuestionID,
userID = entry.Session.User.ID,
firstName = entry.Session.User.FirstName,
lastName = entry.Session.User.LastName,
QuestionText = entry.Question.Stem,
UserResponse = entry.Response.Text,
FreeResponse = entry.ResponseText,
SessionDate = entry.Timestamp
Where SessionDate.HasValue AndAlso
SessionDate.Value >= dateField1 AndAlso
SessionDate.Value <= dateField2
Order By lastName, SessionDate, questionID
谢谢
最佳答案
您需要使用分组依据来汇总结果。这应该工作:
Dim grouped =
From usersAnswers In
From result In results
Group result By result.userID Into Group
Let answers = Group.OrderBy(Function(x) x.QuestionText).ToList()
Select
answers.First().firstName,
Question1 = answers(0).UserResponse,
Question2 = answers(1).UserResponse,
Question3 = answers(2).UserResponse