代码之家  ›  专栏  ›  技术社区  ›  Bhavesh

C#实体框架复杂连接

  •  2
  • Bhavesh  · 技术社区  · 8 年前

    从过去5个小时以来一直在努力解决这个问题,但找不到任何解决方案。

    基本上,我正在尝试从下面的数据创建一个带有ExcelPackage的excel

    Table1
        ID    Name
        1      t1_1
        2      t1_2
    
    
    Table2
        ID    Name
        1      t2_1
        2      t2_2
    
    
    Table12
        ID    Table1   Table2   Value
        1      1         1       v11
        2      2         2       v12
    

    从中尝试获得以下任何一项

    Table1Name, t2_1, t2_2
    t1_1,       v11 ,
    t1_2,           , v12
    

    谢谢

    1 回复  |  直到 8 年前
        1
  •  2
  •   Slava Utesinov    8 年前
    var info = (from t1 in Table1                
                from t2 in Table2
                join t120 in Table12 
                on new {Table1 = t1.ID, Table2 = t2.ID} equals new {t120.Table1, t120.Table2} into t12s
                from t12 in t12s.DefaultIfEmpty()
                group new { t2, t12 } by new { t1.ID, t1.Name } into sub
                select new 
                {
                    sub.Key.Name,
                    data = sub.Select(x => new { x.t2.Name, x.t12 == null ? null : x.t12.Value }).ToList()
                }).ToList();
    
    foreach(var item in info)
    {
        Console.Write($"{item.Name}\t");
        foreach(sub in item.data.OrderBy(x => x.Name))
            Console.Write($"{sub.Name}:{sub.Value}\t");
        Console.WriteLine("");
    }
    
    推荐文章