DBから抽出してきたデータ同士を結合することは頻繁に行うが、IQueryableとListのオブジェクトの結合は試したことがなかったのでやってみた。
結論、普通にGroupJoinでいけた。
var join_tb = db.table1
.Join(db.table2,
a => a.fk_table1,
b => b.pk_table2,
(tb1, tb2) => new { tb1.tb1_col, tb2.tb2_col });
var list_object = JsonConvert.DeserializeObject<IEnumerable<DataModel1>>(responce);
var list =
list_object.GroupJoin(join_tb,
a => a.list_col,
b => b.tb1_col.ToString(),
(a, b) => new ABJoinObj
{
tb2_col = (!b.Any() ? a.list_col :
a.list_col == "a" ? "グループA2" :
a.list_col == "b" ? "グループB2" :
b.FirstOrDefault().tb2_col),
col_name2 = a.col_name2,
col_name3 = a.col_name3,
col_name4 = a.col_name4,
}
);