using System;
using System.Linq;
public class Test
{
public static void Main()
{
var items = new[] {
new { id =1, Name = "item-1"},
new { id =2, Name = "item-2"},
new { id =3, Name = "item-3"},
new { id =4, Name = "item-4"}
};
var issues = new[] {
new { id =1, Date = "01.01.2017"},
new { id =2, Date = "01.02.2017"}
};
var joined = from item in items
join issue in issues on item.id equals issue.id into gj
from sub in gj.DefaultIfEmpty()
select new { item.id, item.Name, isPlanned=sub?.Date != null, sub?.Date };
foreach (var t in joined) {
Console.WriteLine("{0} {1} {2} {3}", t.id, t.Name, t.isPlanned, t.Date);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKdmFyIGl0ZW1zID0gbmV3W10gewogICAgbmV3IHsgaWQgPTEsIE5hbWUgPSAiaXRlbS0xIn0sCiAgICBuZXcgeyBpZCA9MiwgTmFtZSA9ICJpdGVtLTIifSwKICAgIG5ldyB7IGlkID0zLCBOYW1lID0gIml0ZW0tMyJ9LAogICAgbmV3IHsgaWQgPTQsIE5hbWUgPSAiaXRlbS00In0KfTsKdmFyIGlzc3VlcyA9IG5ld1tdIHsKICAgIG5ldyB7IGlkID0xLCBEYXRlID0gIjAxLjAxLjIwMTcifSwKICAgIG5ldyB7IGlkID0yLCBEYXRlID0gIjAxLjAyLjIwMTcifQp9Owp2YXIgam9pbmVkID0gZnJvbSBpdGVtIGluIGl0ZW1zCiAgICAgICAgICAgICBqb2luIGlzc3VlIGluIGlzc3VlcyBvbiBpdGVtLmlkIGVxdWFscyBpc3N1ZS5pZCBpbnRvIGdqCiAgICAgICAgICAgICBmcm9tIHN1YiBpbiBnai5EZWZhdWx0SWZFbXB0eSgpCiAgICAgICAgICAgICBzZWxlY3QgbmV3IHsgaXRlbS5pZCwgaXRlbS5OYW1lLCBpc1BsYW5uZWQ9c3ViPy5EYXRlICE9IG51bGwsIHN1Yj8uRGF0ZSB9Owpmb3JlYWNoICh2YXIgdCBpbiBqb2luZWQpIHsKICAgIENvbnNvbGUuV3JpdGVMaW5lKCJ7MH0gezF9IHsyfSB7M30iLCB0LmlkLCB0Lk5hbWUsIHQuaXNQbGFubmVkLCB0LkRhdGUpOwp9CgoJfQp9