当前位置:编程学习 > C#/ASP.NET >>

|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 
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
};
--------------------编程问答-------------------- http://developer.51cto.com/art/200909/152189.htm --------------------编程问答--------------------
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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,