8,497
社区成员
发帖
与我相关
我的任务
分享
var query = from cs in QueryCS
join db in QUeryDB
on cs.FK_UCode equals db.FK_UCode into NewQuery
from nq in NewQuery.DefaultIfEmpty()
select new
{
CantonName = cs.CantonName,
FK_UCode = cs.FK_UCode,
UCName = cs.UCName,
ShortName = cs.ShortName,
Cnt = nq != null ? (nq.Cnt.HasValue ? nq.Cnt.Value : 0) : 0,
OverCnt = nq != null ? (nq.OverCnt.HasValue ? nq.OverCnt.Value : 0) : 0,
};
left join
var result2 = products.GroupJoin(
categories,
p => p.CategoryId,
c => c.Id,
(p, c) => new {
p = p,
c = c
}
).SelectMany(
g => g.c.DefaultIfEmpty(),
(g, c) => new {
ProductId = g.p.Id,
CategoryName = (c == null) ? "Unkonwn Category" : c.Name,
ProductName = g.p.Name,
UnitPrice = g.p.UnitPrice
}
);
static Product[] products = {
new Product { Id = 1, CategoryId = 2, Name = "iPhone 4", UnitPrice = 3070 },
new Product { Id = 2, CategoryId = 2, Name = "iPhone 4s", UnitPrice = 3821 },
new Product { Id = 3, CategoryId = 2, Name = "iPhone 5", UnitPrice = 4480 },
new Product { Id = 4, CategoryId = 2, Name = "iPhone 6", UnitPrice = 9999 },
new Product { Id = 5, CategoryId = 1, Name = "iPod Classic", UnitPrice = 1700 },
new Product { Id = 6, CategoryId = 4, Name = "iPod Touch", UnitPrice = 2100 },
new Product { Id = 7, CategoryId = 3, Name = "iPad 3", UnitPrice = 3360 },
new Product { Id = 8, CategoryId = 3, Name = "iPad 4", UnitPrice = 3850 },
new Product { Id = 9, CategoryId = 1, Name = "iPod Nano", UnitPrice = 1200 },
new Product { Id = 10, CategoryId = 9, Name = "mac", UnitPrice = 9800 }
};
static Category[] categories = {
new Category { Id = 1, Name = "iPod"},
new Category { Id = 2, Name = "iPhone"},
new Category { Id = 3, Name = "iPad"},
new Category { Id = 9, Name = "mac"}
};
var result1 = products.GroupJoin(
categories,
p => p.CategoryId,
c => c.Id,
(p, c) => new {
ProductId = p.Id,
CategoryName = (c.Count() > 0) ? c.FirstOrDefault().Name : "Unkonwn Category",
ProductName = p.Name,
UnitPrice = p.UnitPrice
}
);