分类目录

链接

2018年一月
« 12月   2月 »
1234567
891011121314
15161718192021
22232425262728
293031  

近期文章

热门标签

博主推荐

现在位置:    首页 > .NET > 正文
linq左连接
.NET 暂无评论 阅读(69)

linq左连接

linq join默认是Inner join,如果要使用Left join的话,需要使用Into 关键词,会生成left join 的SQL

  1. DataClasses1DataContext db = new DataClasses1DataContext();
  2. var leftJoinSql = from student in db.Student
  3. join book in db.Book on student.ID equals book.StudentID inttemp
  4. from tt in temp.DefaultIfEmpty()
  5. select new
  6. {
  7. sname= student.Name,
  8. bname = tt==null??""//这里主要第二个集合有可能为空。需要判断
  9. };

 

如果使用 lambda表达式来实现Left Join和Join的方法如下:

1、读取用户和部门两个表的左连接:

var sg = db.Users.GroupJoin(db.Departments, u => u.DepartmentId, d => d.DepartmentId, (u,d) => new { u, d }).Select(o=>o).ToList();

注意:上面将返回所用用户信息和对应的部门信息(即用户部门ID信息缺少,那么用户列表也会显示)

 

2、读取指定返回列表字段的左连接信息:

 var GJoinList = db.Sys_User.GroupJoin(db.Sys_Department, u => u.DepartmentId, d => d.DepartmentId, (u,d) => new { UserId=u.UserId, Account=u.Account, RealName=u.RealName, EnabledMark=u.EnabledMark, DeleteMark=u.DeleteMark,DepartmentName = d.FirstOrDefault(x=>x.DepartmentId==u.DepartmentId).FullName}).Select(o=>o);

 

3、读取连接表:

var sg = db.Users.Join(db.Departments, u => u.DepartmentId, d => d.DepartmentId, (u,d) => new { u, d }).Select(o=>o).ToList();

注意:这里将只显示用户里DepartmentId和部门表里DepartmentId相等的信息,如果用户没有部门ID则此条用户信息不会显示

 

复制代码
 var data = db.CRM_OrderDetails.Join(db.CRM_Order, d => d.OrderId, o => o.OrderId, (d, o) => new { d, o }).Select(p => new ProductsListModel() {
                OrderId =p.o.OrderId,
                OrderCode=p.o.OrderCode,
                CustomerName=p.o.CustomerName,
                ProductName=p.d.ProductName,
                UnitId=p.d.UnitId,
                Qty=p.d.Qty,
                Price=p.d.Price,
                Amount=p.d.Amount,
                TaxAmount=p.d.TaxAmount,
                TaxCostAmount=p.d.TaxCostAmount,
                CreateTime=p.d.CreateTime,
                EndTime=p.d.EndTime,
                Description=p.d.Description
            }).Where(expression).OrderBy(orderbyExpression);

本文版权归数据库之家所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:linq左连接 | 数据库之家