按外键分组并选择(LINQ)

时间:2016-01-15 14:58:34

标签: c# sql-server linq

我有2张桌子:

  

表1:Id_tb1(PK),Title1。

     

表2:Id_tb2(PK),Id_tb1(FK),Title2。

因此table2的简单查询可以这样写:

from p in table2 select new { p.Id_tb2, Title1 = p.Table1.Title1 }

如何在FK栏中使用群组时,在我的选择中获取Title1?像这样的东西:

from p in table2 group p by p.Id_tb1 into g select g.Table1.Title1

2 个答案:

答案 0 :(得分:1)

试试这个:

var result =
    from p in table2
    group p by p.Table1 into g
    select g.Key.Title1;

这由Table1实体分组,而不仅仅是id。

g.Key允许您访问组密钥,该组密钥是每个组的Table1实体。

答案 1 :(得分:1)

你可以试试这个:

var result = from p in table2 group p.Table1.Title1 by p.Id_tb1 into g select g.ToList();

此查询将返回每个组Title1的列表。

如果您需要选择多个属性,请执行以下操作:

var result = from p in table2 group p by p.Id_tb1 into g select g.Select(e=>new { e.Id_tb2, Title1 = e.Table1.Title1 });