LINQ Join Question

CSharp · Console

/Program.cs

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

		}
	}
}
;