我需要为导出生成一个“扁平化”版本的数据,其中客户希望相关的表行显示为列。我们正在使用实体框架 4 和 .NET 4.0
客户可以为其活动创建自定义问题。可能有零到无限的问题。参加活动的用户可能不回答、回答部分或全部这些问题。
我需要制作的是这样的:
User 1 User 1 info field A User 1 info field B User 1 Answer to question A User 1 Answer to Question B
User 2 User 2 info field A User 2 info field B User 2 Answer to question A User 2 Answer to Question B
创建结果集的用户信息部分不是问题,但我对如何获取相关问题和答案感到困惑,即:
from urf in tblUserRegistrationFields.Include("tblRegistrationFields")
where urf.UserID == eachUserID && urf.tblRegistrationField.EventID == thisEventID
select new
{
FieldLabel = urf.tblRegistrationField.FieldLabel, //this is the question name
value = urf.value //this is the user's answer
}
并将这些添加到我的用户选择语句中作为单独的列,即:
var users = from u in context.tblUsers
<snip>
select new
{
UserID = u.UserID,
<snip>,
CustomQuestionA = AnswerA,
CustomQuestionB = AnswerB,
... etc.
};
最终我需要创建一个网格,然后我可以将其导出为他们想要的格式,并且我对非 LINQ 解决方案持开放态度(尽管购买 3rd 方控件不是一种选择。)我怀疑有一种方法可以利用 LINQ 的分组功能,但我无法将其应用于这种情况。