エクスポート用に「フラット化された」バージョンのデータを作成する必要があります。このバージョンでは、顧客は関連するテーブルの行を列として表示することを望んでいます。EntityFramework4と.NET4.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
}
そして、それらを個々の列としてユーザーselectステートメントに追加します。
var users = from u in context.tblUsers
<snip>
select new
{
UserID = u.UserID,
<snip>,
CustomQuestionA = AnswerA,
CustomQuestionB = AnswerB,
... etc.
};
最終的には、グリッドを作成して、希望の形式にエクスポートできるようにする必要があります。非LINQソリューションを利用できます(ただし、サードパーティのコントロールを購入することはできません)。LINQのグループ化を活用する方法があると思います。機能はありますが、このシナリオには適用できませんでした。