|zyciis| 求Lambda表达式 LEFT JOIN 方法,有示例谢谢
如我有表Brand(品牌表)
Code Name SoreNumber Status
001 Nkie 2 1
002 Puma 1 1
003 Anta 3 0
TypeBrand
Guid TypeCode BrandCode
1 001 001
-------------------------------------------
SQL语句为
SELECT a.Code, a.Name, CASE WHEN b.TypeCode IS NULL THEN 0 ELSE 1 END AS IsChecked
FROM Pub_Brand AS a LEFT OUTER JOIN
Pub_TypeBrand AS b ON a.Code = b.BrandCode AND b.TypeCode = '001' Order BY a.SoreNumber ASC
以下是我的代码
//绑定有效的品牌
YK.Shop.IDAL.Pub.ITypeBrandDao daoTypeBrand = Factory.FactoryInstance.Create("TypeBrandDao") as YK.Shop.IDAL.Pub.ITypeBrandDao;
YK.Shop.IDAL.Pub.IBrandDao daoBrand = Factory.FactoryInstance.Create("BrandDao") as YK.Shop.IDAL.Pub.IBrandDao;
var list = daoBrand.List(l => l.Status == 1)
.OrderBy(l => l.SortNumber)
.Select(l => new
{
Model = l,
IsChecked = daoTypeBrand
.Count(i => i.BrandCode == l.Code && i.TypeCode == "001") > 0 ? true : false
});
rptList.DataSource = list;
rptList.DataBind();
但我的方法是先select后再查询类型的,不符合的我上面的LEFT JOIN的方法
那 LEFT JOIN的方法要怎么写呢?
谢谢 --------------------编程问答-------------------- 通过GroupJoin来实现左连接
var q =
from e in db.Employees
join o in db.Books on e.EmployeeID equals o.EmployeeID into b
from x in b.DefaultIfEmpty()
select new
{
e.ID,
e.Name,
o.BookName
}; --------------------编程问答-------------------- 没看懂!! --------------------编程问答-------------------- http://tech.ddvip.com/2008-09/122086261861801.html --------------------编程问答-------------------- try->
var q=from a in Pub_Brand--------------------编程问答-------------------- http://developer.51cto.com/art/200909/152189.htm --------------------编程问答--------------------
join b in Pub_TypeBrand on new{a.Code,b.TypeCode} equals new {b.BrandCode,"001"} into l
from o in l.DefaultIfEmpty()
select new { a.Code, a.Name,
IsChecked=(o.TypeCode==null)?false:true
};
from a in Brands--------------------编程问答-------------------- 这样。
join b in TypeBrands.Where(n=>n.TypeCode=="001") on a.Code equals b.BrandCode into l
from o in l.DefaultIfEmpty()
select new {
a.Code,
a.Name,
IsChecked=o.TypeCode!=null
}
from a in Brands--------------------编程问答-------------------- 完全可以到数据库里面尝试一下
join b in TypeBrands.Where(n=>n.TypeCode=="001") on a.Code equals b.BrandCode into l
from o in l.DefaultIfEmpty()
orderby a.SoreNumber
select new {
a.Code,
a.Name,
IsChecked=o.TypeCode!=null
}
补充:.NET技术 , ASP.NET