CSharp · Console
using System;
using System.Linq;
using System.Collections.Generic;
public class Table1
{
public int Table1_id;
public string Field1 = "This is Field1";
public string Field2 = "This is Field2";
public Table1(int id)
{
Table1_id = id;
}
}
public class Table2
{
public int Table2_id;
public string FieldA = "This is FieldA";
public string FieldB = "This is FieldB";
public Table2(int id)
{
Table2_id = id;
}
}
public class Program
{
public static void Main()
{
var ListOfTable1 = new List<Table1>()
{
new Table1(0), new Table1(1), new Table1(2)}
;
var ListOfTable2 = new List<Table2>()
{
new Table2(0), new Table2(0), new Table2(0)}
;
var query = ListOfTable1
.GroupJoin(ListOfTable2, (table1 => table1.Table1_id), (table2 => table2.Table2_id),
(table1, table2) => new
{
Id = table1.Table1_id,
field1 = table1.Field1,
field2 = table1.Field2,
manySubObjects = (table2.Count() > 0)
? (from t in table2 select new { fielda = t.FieldA, fieldb = t.FieldB}).ToList()
: null
}).ToList();
foreach (var result in query)
{
if(result != null)
{
Console.Write(result.Id + ", ");
Console.Write(result.field1 + ", ");
Console.Write(result.field2 + ", ");
Console.Write((result.manySubObjects == null ? 0 : result.manySubObjects.Count()));
Console.WriteLine();
}
}
}
}