Я пытаюсь создать список групп на основе первой буквы названия книги, а затем отобразить все книги в группе под каждой конкретной буквой. Так, например, если бы текущая буква была «C», я бы хотел выбрать группу, в которой ее ключ также был «C». Я думал, что выполнение запроса для создания групп будет более эффективным, чем выполнение запроса для каждой буквы, но у меня проблемы.
Вот как я создаю группу (извините за VB) (Модель определена как IEnumerable (из Книги):
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. Я также попробовал «Выбрать группу Grp.Group», которая также, похоже, не помогает.
Любые предложения будут оценены!
UPDATE:
приведенный ниже ответ оказался верным, но я решил поделиться кодом после перевода на 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