我正在尝试按以下顺序对结果进行分组。
我想要属于学校的团队的条目。 我的Entry模型通过FK链接到User。 我的入门模型与FK团队有关。 团队通过m2m链接到User。 用户通过FK链接到School。
我当前的查询如下所示:
var y =
(from en in _db.Entries
where en.User.School_Id == schoolId
group en by en.Team_Id into te
select new
{
Team = te.Key,
Entries = te
}).ToList();
这将完美地返回团队和团队下方的相应条目。
Teams
|
-Team A
--|
Entries
|
-Entry 1
-Entry 2
如何在学校分组中嵌套这一切? (在演示中,我只是指定了一个学校ID,但在实践中会有一个与之匹配的学校ID列表。)
-Schools
|
-School A
-|
-Teams
-Team A
|
-Entries
|-Entry 1
|-Entry 2
我想将它直接绑定到gridview。 这样做效果很好但是通过额外的分组,我有点不确定它是如何影响这个标记的。
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:BoundField HeaderText="School" DataField="School" />
<asp:BoundField HeaderText="Team" DataField="Team" />
<asp:TemplateField HeaderText="Entries">
<ItemTemplate>
<asp:BulletedList ID="BulletedList1" runat="server"
DataSource='<%#Eval("Entries")%>' DataValueField="Name" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
更新:
答案 0 :(得分:0)
尝试使用此代码,它将返回每个团队的条目集合:
var ColEntries = _db.Teams.GroupJoin(_db.Entries,
t => t.Team_ID,
e => e.Team_ID,
(t, e) =>
new {
Team = t,
Entries = e.Select(en => en).ToList()
}).ToList();
这将适用于每所学校并获得团队及其参赛作品
_db.Schools.foreach(s=>
{
//Fine a collection say "col"
var y = _db.Entries.Where(e=> e.User.School_ID = s.School_ID).GroupBy(e=> e.Team_ID).ToList();
col.Add(y);
});
我希望它有所帮助