EF CoreでDBと接続し、2つのテーブルをJOINした結果を他のスコープでList型として使用したいです。
以下JOIN部分のコードです。
C#
1var joinData = db.Books 2 .Join(db.Categories, 3 b => b.Id, 4 c => c.catId, 5 (b, c) => new {Book = b, Category = c}) 6 .ToList();
JOINした結果には戻り値がない?ので他のスコープでも使用するには
結果を格納するためのクラスを作成し(例としてJoinDataProp.csとします)、各プロパティにjoinDataの値を格納するのが
一般的かなと思うのですが、今回はjoinDataの結果をListとして扱いたいです。
以下のように初期化時に設定するのかと考えたのですが、
joinDataには複数の要素(テーブルにおけるレコード)があり、以下の例では1要素分の値しか格納できず悩んでいます。
C#
1List<JoinDataProp> testJoinData = new List<JoinDataProp> 2{ 3 new JoinDataProp {Id = joinData.Select(x => x.Book.Id)} 4 ... 5 ... 6}
このようなケースではどのように対応するのがよいでしょうか?
初歩的な質問で申し訳ありませんがアドバイスよろしくお願い致します。
追記
質問頂いたように、JOINした結果を受けるためだけのクラスとして
JoinDataProp.csに対応する各要素は作成して試すのは実施しています。
C#
1var joinDataProp = new JoinDataProp(); 2foreach(var item in joinData ) 3{ 4 joinDataProp.BookName = item.Book.BookName, 5 joinDataProp.Category = item.Category.CategoryName, 6} 7 8return joinDataProp
これだと結果は受け取れてほかの関数の引数に使ったり、ほかのスコープでも使えるのでよいのですが
JOINした結果を使用したい箇所(使用用途:UIコンポーネントのグリッドの表示データ)がListか配列での指定がされており、joinDataPropをListに変換する方法が分からず、JOINした結果をそのままListに格納できないかと考えていました。
回答2件
あなたの回答
tips
プレビュー