【发布时间】:2011-01-28 03:15:15
【问题描述】:
我在这里要做的是根据书名的第一个字母创建一个组列表,然后在每个特定字母下方显示组中的所有书籍。例如,如果当前字母是“C”,我想选择其键也是“C”的组。我认为运行查询来创建组会比为每个字母运行查询更有效,但我遇到了问题。
这是我创建组的方式(对于 VB 感到抱歉)(模型定义为 IEnumerable(of Book):
Dim TitleGroups = From Bk In Model Group Bk By Bk.FirstLetter Into Group Order By FirstLetter
如果我然后使用 TitleGroups 并遍历它,一切正常:
For Each Grp In TitleGroups
Resposnse.Write(Grp.FirstLetter & "<br/>")
For Each Bk In Grp.Group
Response.Write(Bk.Title & "<br/>")
Next
Next
但是如果我尝试选择一个组,它就不起作用:
Dim CurrentGroup = From Grp In TitleGroups Where Grp.FirstLetter = "A" Select Grp
我似乎无法使用我期望的 CurrentGroup 上的任何属性。我也尝试过“Select Grp.Group”,这似乎也没有帮助。
任何建议将不胜感激!
更新:
下面他们的回答被证明是正确的,但我想我会在翻译成 VB 后分享代码(不要评判我):
Dim TitleGroups = From Bk In Model _
Order By Bk.FirstLetter _
Group Bk By Bk.FirstLetter Into Books = Group, BkGrp = AsEnumerable() _
Select FirstLetter, Books
Dim CurrentGroup = From Grp In TitleGroups _
Where Grp.FirstLetter = "A" _
Select Grp
For Each Grp In CurrentGroup
Response.Write(Grp.FirstLetter & "<br/>")
For Each Book In Grp.Books
Response.Write(Bk.Title & "<br/>")
Next
Next
【问题讨论】:
标签: linq asp.net-mvc-2 group-by