I have the following query but i have no idea on how to do a left outer join on table 1.
var query = (from r in table1
join f in table2
on r.ID equals f.ID
select new
{
r.ID,
r.FirstName,
r.LastName,
FirstNameOnRecord =
(f != null ? f.FirstName : string.Empty),
LastNameOnRecord =
(f != null ? f.LastName : string.Empty),
NameChanged =
(f != null
? (f.FirstName.CompareTo(r.FirstName) == 0
&& f.LastName.CompareTo(r.LastName) == 0)
: false)
}).ToList();
Vishal
Refer this or this examples to learn more and your case it would be something like this-
var query = from r in table1
join f in table2
on r.ID equals f.ID into g
from f in g.DefaultIfEmpty()
select new
{
r.ID
, r.FirstName
, r.LastName
, FirstNameOnRecord = (f != null ? f.FirstName : string.Empty)
, LastNameOnRecord = (f != null ? f.LastName : string.Empty)
, NameChanged = (f != null ? (f.FirstName.CompareTo(r.FirstName) == 0
&& f.LastName.CompareTo(r.LastName) == 0) : false)
}).ToList();
Here is a great breakdown of the left outer join.
Have you seen these examples? You're probably interested in this part about Left Outer Join in Linq.
Using lambda expression
db.Categories
.GroupJoin(
db.Products,
Category => Category.CategoryId,
Product => Product.CategoryId,
(x, y) => new { Category = x, Products = y })
.SelectMany(
xy => xy.Products.DefaultIfEmpty(),
(x, y) => new { Category = x.Category, Product = y })
.Select(s => new
{
CategoryName = s.Category.Name,
ProductName = s.Product.Name
})
来源:https://stackoverflow.com/questions/3971063/left-outer-join-in-linq