![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になっております。
表題のテーマについて、理解いただける方にアドバイスお願いします。
会員を表すMembersというテーブル、
種別を表すTypesというテーブル、
会員と種別を結び付けるMemberTypeBindsというテーブルがあって、会員・種別がn対nで定義されています。
Membersの件数は200件ほど、Typeは20件程度。だいたいMembersは1~5くらいのTypeに紐づいています。
Table Members
int ID(主キー, autoIncrement)
varchar(20) MemberName
Table Types
int ID(主キー, autoIncrement)
varchar(20) TypeName
Table MemberTypeBinds
int memberID(外部キー, MembersのID)
int typeID(外部キー, TypesのID)
これを、LINQで下記のクラスオブジェクトに抽出したいと思っています。
今は全件表示でもいいですが、そのうちページングで表示する必要がでてくると思います。
public class MemberTypes
{
public Member member{ get; set; }
public List<Type> types { get; set; }
}
どうやるかがわかりません。LINQはこんな感じだと思うのですが、
public List<MemberTypes> GetMemberTypes(){
using (var dc = new DataContext()){
var result = dc.MemTypeBinds
.GroupBy(mt=>mt.Member)
// このあと、どうやったらいいかがわかりません。
// DBから階層化オブジェクトを生成するのは
// けっこう頻出のテーマだと思うので、しっかりマスターしたいです。
}).ToList();
return result;
}
}
LINQに詳しい方、お助けください。
No.1ベストアンサー
- 回答日時:
ここでLINQについて質問しても回答は出ないのでは。
C#カテのほうが向いてると思うよw
LINQは本当に便利。取得だけならSQLなど一行も書く必要ないし、オブジェクトに詰める手間もいらない。
キモは、Group化してまとめたボディ部を、Selectで別の型に変えるところでしょう。
public List<MemberTypes> GetMemberTypes(){
using (var dc = new DataContext()){
return dc.MemTypeBinds
.GroupBy(mt=>mt.Member)
.Select(g=>new MemberTypes{
member = g.Key,
types = g.Select(mtg=>mtg.Type).ToList()
}).ToList();
}
}
逆の種別->メンバー(複数)変換も書いてみたww
public List<TypeMembers> GetTypeMembers() {
using (var dc = new DcHealth()) {
return dc.MemTypeBinds
.GroupBy(mt => mt.Type)
.Select(g => new TypeMembers {
type = g.Key,
members= g.Select(mtg => mtg.Member).ToList()
}).ToList();
}
}
面白いwww
shockatzさま、正月早々ありがとうございます。
感謝感激です。
members= g.Select(mtg => mtg.Member)
のところが本当に感心しました。GroupByすると、なんか変なクラス(IGrouping)に変換されてしまっていて、手も足も出なかったのですが、これなら何にでも応用できますね!
SQLのパラメタクエリで、長いSQLCommandを書くのが苦痛で苦痛で仕方なかったので、本当に嬉しいです。
LINQやEFについて、また質問させてください。よろしくお願いします。
(@IT会議室での御礼も含めまして)本年もよろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルリンク リンク元を知...
-
L2SWはARPテーブルを持っている?
-
複雑なSQL文について
-
mysql alter table 終わらない
-
飲み会で、座敷orテーブルどち...
-
男性と2人で飲食店に行きテーブ...
-
一致するデータのみ削除したい
-
アクセスのリンクテーブル一覧...
-
【エクセル】データテーブルの...
-
MySQLで複数テーブルを作成する
-
論理名とコメント構文(?)について
-
テーブル名の前のドットの意味
-
複数のカラムに対するリレーシ...
-
アクセスでテーブルのデザイン...
-
複数テーブルにわたるCOUNT
-
LINQでn:nテーブルを階層オブジ...
-
更新されたテーブルを表示したい
-
親子関係のテーブルについて
-
1つのテーブルに同じデータを参...
-
まるいテーブル 円い 丸い 漢字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
L2SWはARPテーブルを持っている?
-
外部キーだけのテーブル(主キ...
-
男性と2人で飲食店に行きテーブ...
-
テーブルリンク リンク元を知...
-
会社の飲み会の幹事になり、座...
-
「テーブルに座って……」という...
-
アクセスのリンクテーブル一覧...
-
ターンテーブルの、電子レンジ...
-
飲み会で、座敷orテーブルどち...
-
【PHP】SQL文のSUM関数で出力し...
-
まるいテーブル 円い 丸い 漢字...
-
テーブル:生徒名簿 生徒名簿の...
-
1対1のリレーション(主キー同...
-
論理名とコメント構文(?)について
-
面接のときテーブルが正面に。...
-
一致するデータのみ削除したい
-
複雑なSQL文について
-
SQL構文です 画像のようにした...
-
件数の多い順にselect
-
お金持ちのテーブル
おすすめ情報