0
を持つオブジェクトへのデータの行私は、この形式で提供されますいくつかのデータを持っている:子供や孫
+---------+---------+--------------+---------------------+
| Group 1 | Child 1 | Grandchild 1 | Greatgrandchild 1 |
| Group 1 | Child 1 | Grandchild 1 | Greatgrandchild 2 |
| Group 1 | Child 1 | Grandchild 2 | Greatgrandchild 3 |
| Group 1 | Child 1 | Grandchild 2 | Greatgrandchild 4 |
| Group 1 | Child 2 | Grandchild 3 | Greatgrandchild 5 |
| Group 1 | Child 2 | Grandchild 3 | Greatgrandchild 6 |
| Group 1 | Child 2 | Grandchild 3 | Greatgrandchild 7 |
| Group 1 | Child 2 | Grandchild 4 | Greatgrandchild 8 |
| Group 1 | Child 2 | Grandchild 4 | Greatgrandchild 9 |
| Group 2 | Child 3 | Grandchild 5 | Greatgrandchild 10 |
| Group 2 | Child 3 | Grandchild 5 | Greatgrandchild 11 |
| Group 2 | Child 3 | Grandchild 6 | Greatgrandchild 12 |
| Group 2 | Child 3 | Grandchild 6 | Greatgrandchild 13 |
| Group 2 | Child 4 | Grandchild 7 | Greatgrandchild 14 |
| Group 2 | Child 4 | Grandchild 7 | Greatgrandchild 15 |
| Group 2 | Child 4 | Grandchild 8 | Greatgrandchild 16 |
| Group 2 | Child 4 | Grandchild 8 | Greatgrandchild 17 |
| Group 2 | Child 4 | Grandchild 8 | Greatgrandchild 18 |
+---------+---------+--------------+---------------------+
と私はそれが子どもたちとPOCOSにそのデータを変換したい:
+-List<Group>
+-List<Child>
+-List<Grandchild>
+-List<Greatgrandchild>
その後私はこのようなものを書くことができます:
foreach(var group in Groups)
{
foreach(var child in group.Childs)
{
foreach(var grandChild in child.GrandChilds)
{
foreach(var greatGrandChild in grandChild.GreatGrandChilds)
{
}
}
}
}
私はMVCを使用しており、これを達成するためにLINQを使用できると思います。
私はいくつかのGroupBy'ingを使用して、これをブルートフォースすることができました:
var sb = new StringBuilder();
foreach (var courses in query.GroupBy(c => c.courseInfo))
{
foreach (var course in courses)
{
sb.AppendLine(course.courseInfo);
foreach (var semesters in courses.Where(c => c == course).GroupBy(s => s.semester_name))
{
foreach (var semester in semesters)
{
sb.AppendLine(semester.semester_name);
foreach (var quizzes in semesters.Where(s => s == semester).GroupBy(q => q.quiz_name))
{
foreach (var quiz in quizzes)
{
sb.AppendLine(quiz.quiz_name);
foreach (var student in quizzes.Where(q => q == quiz))
{
sb.AppendLine(student.last_name);
}
}
}
}
}
}
}
var results = sb.ToString();
私は上記のコードを使用して文字列を構築することができるよ、おそらく私のクラスを構築できますが、これは明らかです「良い」アプローチではありません。
私もそうだと思います。たぶんあなたは何かを試してみることができますし、試行後にあなたが持っている疑問をお手伝いします。例えば、LINQのための['GroupBy()'](https://msdn.microsoft.com/en-us/library/system.linq.enumerable.groupby(v = vs.110).aspx)拡張メソッドがありますそれは助けになる可能性が高いです。 –
@MikeMcCaughan私はGroupByと一緒に遊んでいましたが、foreachループがたくさんあるモンスターになってしまいました。 – Kevin
あなたが物事で「遊んだ」なら、あなたはそれらの試みを示すべきです。そうでなければ、あなたは「少しの怪物」と考えられる回答を受け取るかもしれませんが、他の人は答えません。 –