これが私の現在の関係です
DataRelation relation = new DataRelation("EventCategoryRelation", eventsTable.Columns["event_id"], eventCategoriesTable.Columns["event_id"]);
ds.Tables.Add(eventsTable);
ds.Tables.Add(eventCategoriesTable);
ds.Relations.Add(relation);
ここで表を簡単に見てみましょう
イベントテーブル
event_id | event_description
1 || "First Event"
EventCategories テーブル
event_category_id || event_id || category_id
1 || 1 || 1
2 || 1 || 2
関係は多対多(1 つのイベントが多カテゴリ)
foreach ループを使用して DTO を設定する方法を次に示します。
foreach (DataRow row in eventsTable.Rows)
{
Event events = new Events();
events.Description = row["event_description"].ToString();
DataRow[] aDr = row.GetChildRows("EventCategoryRelation");
foreach (DataRow dr in aDr)
{
Categories category = new Categories();
category.CategoryID = Int64.Parse(dr["category_id"].ToString());
events.CategoryList.Add(category);
}
}
実際のコードにはさらに多くのフィールドがあります。foreach ループを LINQ クエリに置き換えたい。それは可能ですか?