LINQ查询-左外部联接(返回第一个集合中的所有元素)

左外部联接 (相对于sql:left join | left outer join)

它返回第一个集合中的所有元素,无论它是否在第二个集合中有相关元素。在 LINQ 中,通过对分组联接的结果调用 DefaultIfEmpty()方法来执行左外部联接。DefaultIfEmpty()方法从列表中获取指定元素。如果列表为空,则返回默认值。
通俗来说,就是使用此方法,返回第一个集合中所有元素,假如第一个集合中的值在其他集合中不存在,则可以使用空来进行代替,实现第一集合全部数据的显示。而如果使用普通的查询,则仅可以查询出在其他集合存在的数据,即存在相等显示,不相等不显示。
这里用到一个函数

DefaultIfEmpty():如果为空则使用默认值代替,默认值为 NULL

例:

						from p in await _CarMaintainRepository.GetListAsync()
                        join d in await _CarDriverRepository.GetListAsync() on p.Ma_Driver equals d.Id into temp1
                        from t1 in temp1.DefaultIfEmpty()
                        select new Maintain_Dri_Dto
                        {
                            Id = p.Id.ToString(),
                            AddTime = p.AddTime,
                            Ma_ActualPrice = p.Ma_ActualPrice,
                            Ma_Mileage = p.Ma_Mileage,
                            Ma_Post = p.Ma_Post,
                            Ma_Price = p.Ma_Price,
                            Ma_Remark = p.Ma_Remark,
                            Ma_State = p.Ma_State,
                            Ma_Time = p.Ma_Time,
                            Ma_Driver = p.Ma_Driver.ToString(),
                            Ma_DriverName = t1.IsEmpty()?"":t1.Dri_Name
                        }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
LINQ(Language Integrated Query)是.NET框架的一种查询技术,它提供了一种统一的查询语法,可以用于查询各种数据源,包括集合、数据库、XML等。在LINQ,可以使用查询表达式或者方法链的方式来进行查询操作。 要查询集合包括子元素集合,可以使用LINQ的嵌套查询功能。嵌套查询是指在查询表达式或者方法链嵌套另一个查询,以实现对子元素集合查询。 下面是一个示例,演示如何使用LINQ查询集合包括子元素集合: ```csharp // 假设有一个包含学生信息的类 class Student { public string Name { get; set; } public List<string> Courses { get; set; } } // 创建学生列表 List<Student> students = new List<Student> { new Student { Name = "Alice", Courses = new List<string> { "Math", "English" } }, new Student { Name = "Bob", Courses = new List<string> { "Science", "History" } }, new Student { Name = "Charlie", Courses = new List<string> { "Math", "Physics" } } }; // 使用LINQ查询学生列表选修了Math课程的学生 var query = from student in students where student.Courses.Contains("Math") select student; // 输出查询结果 foreach (var student in query) { Console.WriteLine(student.Name); } ``` 在上面的示例,我们创建了一个包含学生信息的类`Student`,其`Courses`属性是一个子元素集合,表示学生选修的课程。然后我们创建了一个学生列表`students`,包含了几个学生的信息。 接下来,我们使用LINQ查询语法查询了选修了Math课程的学生,通过`where`子句和`Contains`方法来筛选符合条件的学生。最后,我们通过`foreach`循环输出查询结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PROBIE_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值