IQueryableオブジェクトと Listオブジェクトを結合する方法

  • 2019.10.01
  • C#
IQueryableオブジェクトと Listオブジェクトを結合する方法

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,
        }
    );