C# Linq 左外联
生活随笔
收集整理的這篇文章主要介紹了
C# Linq 左外联
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
C# Linq 左外聯(lián)
假設(shè)我們有一個Student類,具有姓名、年齡、班級Id三個屬性
還有一個Class類,具有Id,班級名兩個屬性
現(xiàn)要查找學(xué)生姓名、年齡和其所在班級名,因此需要做一個Student表左聯(lián)Class表的操作
方式一:
var results = from s in studentsjoin c in classes on s.ClassId equals c.Id into scsfrom sc in scs.DefaultIfEmpty()select new { Name = s.Name, Age = s.Age, ClassName = sc?.ClassName ?? string.Empty };方式二:
var results = students.GroupJoin(classes,s => s.ClassId,c => c.Id,(s, cs) => new{Name = s.Name,Age = s.Age,ClassName = cs.ElementAtOrDefault(0) is null ? string.Empty : cs.ElementAt(0).ClassName});完整代碼演示:
using System; using System.Collections.Generic; using System.Linq;public class Student {public string Name { get; set; }public int Age { get; set; }public int ClassId { get; set; } }public class Class {public int Id { get; set; }public string ClassName { get; set; } }public class Program {public static void Main(){List<Student> students = new List<Student>(){new Student(){Name = "B", Age = 18, ClassId = 1},new Student(){Name = "C", Age = 19, ClassId = 2},new Student(){Name = "A", Age = 20, ClassId = 3},new Student(){Name = "D", Age = 20, ClassId = 4},new Student(){Name = "E", Age = 20, ClassId = 5},};List<Class> classes = new List<Class>(){new Class(){ Id = 1, ClassName = "1班"},new Class(){ Id = 2, ClassName = "2班"},new Class(){ Id = 3, ClassName = "3班"},};//方式一://var results = from s in students// join c in classes on s.ClassId equals c.Id into scs// from sc in scs.DefaultIfEmpty()// select new { Name = s.Name, Age = s.Age, ClassName = sc?.ClassName ?? string.Empty };//方式二:var results = students.GroupJoin(classes,s => s.ClassId,c => c.Id,(s, cs) => new{Name = s.Name,Age = s.Age,ClassName = cs.ElementAtOrDefault(0) is null ? string.Empty : cs.ElementAt(0).ClassName});foreach (var result in results){Console.WriteLine($"{result.Name} {result.Age} {result.ClassName}");}} }總結(jié)
以上是生活随笔為你收集整理的C# Linq 左外联的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pacman手册
- 下一篇: 到最后还是还CSDN安家吧