teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/12/08 00:43

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,32 @@
1
1
  > myView.BLists = await _context.BLists.GroupBy(x => x.Kind).ToListAsync();
2
2
 
3
- それでエラーになりませんか? 前のスレッドのやり取りを見てない?
3
+ それでエラーになりませんか? 前のスレッドのやり取りを見てない?
4
+
5
+ **【2020/12/8 9:40 追記】**
6
+
7
+ コンパイルエラーだったんですね。見落としてました。
8
+
9
+ > 型 'System.Collections.Generic.List<System.Linq.IGrouping<string, SampleProject.Models.BList>>' を 'System.Collections.Generic.IEnumerable<SampleProject.Models.BList>' に暗黙的に変換できません。明示的な変換が存在します (キャストが不足していないかどうかを確認してください)
10
+
11
+ そのエラーは、エラーメッセージが言うように SampleViewModel クラスの BLists プロパティの型 IEnumerable<BList> を System.Collections.Generic.List<System.Linq.IGrouping<string, SampleProject.Models.BList>> に変更すれば出なくなります。
12
+
13
+ それでコンパイルは通るはずですが、相手が SQL Server でしょうから、今度は実行時に _context.BLists.GroupBy(x => x.Kind) のところでそれを SQL Server に発行するための SQL 文に変換できないということで、"Client side GroupBy is not supported" というエラーになると思います。
14
+
15
+ 最初に回答したのはそのことを言ってます。解決策は前のスレッド [https://teratail.com/questions/307318](https://teratail.com/questions/307318) を見てください。
16
+
17
+
18
+ > SampleViewModelのView側1行目にあるModelのImport部分も
19
+
20
+ > @model DBAccessSample.Models.SampleViewModel
21
+
22
+ > ではなく
23
+
24
+ > @model IEnumerable<IGrouping <string,SampleProject.Models.SampleViewModel>>
25
+
26
+ > にするべきなのでしょうが
27
+
28
+ そこは、
29
+
30
+ > 実現したいことは、AListと、BListをGroupByしたもの、2つのModelをViewModelとして1つのViewに表示させることです。
31
+
32
+ という目的を果たすためにはそのままにしておかないとダメです。View の中で、controller から受け取った SampleViewModel の ALists, BLists プロパティで「AListと、BListをGroupByしたもの」を取得して表示するということになります。