也许以下内容可以帮助您:
class Program
{
public class A
{
public int ID { get; set; }
public string COLUMN1 { get; set; }
public string COLUMN2 { get; set; }
}
public class B
{
public int ID { get; set; }
public int AID { get; set; }
public string SUBCOLUMN1 { get; set; }
public string SUBCOLUMN2 { get; set; }
}
static void Main(string[] args)
{
var listA = new List<A>{
new A() { ID = 1, COLUMN1="COLUMN11",COLUMN2 = "COLUMN12"},
new A() { ID = 2 ,COLUMN1="COLUMN21",COLUMN2 = "COLUMN22"}
};
var listB = new List<B>()
{
new B(){ID=1,AID = 1 },
new B(){ID=2,AID = 1},
new B(){ID=3,AID = 1},
new B(){ID=4,AID = 2},
new B(){ID=5,AID = 2}
};
//Group Join As Method Chain:
var queryAsMethodChain = listA.GroupJoin(listB, a => a.ID, b => b.AID, (a, t) => new
{
ID = a.ID,
COLUMN1 = a.COLUMN1,
COLUMN2 = a.COLUMN2,
SUBTABLE = t.Select(tt => new { tt.SUBCOLUMN1, tt.SUBCOLUMN2 })
});
//Group Join As Standard Method
var queryAsStandardMethod = from a in listA
join b in listB
on a.ID equals b.AID into t
select new
{
ID = a.ID,
COLUMN1 = a.COLUMN1,
COLUMN2 = a.COLUMN2,
SUBTABLE = t.Select(tt => new { tt.SUBCOLUMN1, tt.SUBCOLUMN2 })
};
}