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();
这是左外连接的一个很好的细分。
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();
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
})
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.