这是一个具有挑战性的问题。
我在DB中有两个表:
类别: ID,类名等。
学生: ID,ClassID,名称等。
我想要一个包含以下内容的Repeater:
第1类名称
第2类名称
现在这是我的困境。
如果我按照这些方式选择并加入Linq,我会为每个学生提供一个新的转发器项目:
var query = (From c in Class
join s in Student on c.ID equals S.ClassID
select new {C,A}).Tolist();
然而,我想要的是每个CLASS的项目,每个班级中的儿童项目作为学生。
不太确定如果我在这里解释自己......提出问题,我会回答。
非常感谢你。
答案 0 :(得分:1)
您可以使用嵌套转发器并让子转发器使用父类的学生。
<asp:Repater ....>
<asp:Repeater runat="server" DataSource='<%# Eval("Students") %>'>
</>
这取决于您的数据模型,但如果您拥有正确的FK结构,则无需手动加入新的{}。你只需要在datacontext上强行加载,然后在你的班级上做一个Foreach
此处找到的代码示例: http://www.antiyes.com/nested-repeater
答案 1 :(得分:0)
这样的事情应该有效(基本上是在加入之前对学生进行分组):
Student.GroupBy(s => s.ClassID)
.Join(Class,
g => g.Key,
c => c.ID,
(g, c) => new { Class = c, Students = g.ToArray() })
.ToList();
结果是一个匿名类型列表,Class
= 给定类和Students
= 参加该类的学生数组。< / p>