linq join


    数据准备:
    List<dynamic> ls1=new List<dynamic>{
        new {Id = 1,Name = "张三"},
        new {Id = 2,Name = "李四"},
        new {Id = 3,Name = "王五"},
        new {Id = 4,Name = "赵六"}
    };
    List<dynamic> ls2=new List<dynamic>{
        new {Name = "张三", Subject="语文", Score=60},
        new {Name = "张三", Subject="数学", Score=70},
        new {Name = "张三", Subject="外语", Score=80},
        new {Name = "李四", Subject="语文", Score=85},
        new {Name = "王五", Subject="语文", Score=69}
    };

Join

Inner Join

    var ls = from x in ls1
             join y in ls2 on x.Name equals y.Name
             select new {
                 Id = x.Id,
                 Name = x.Name,
                 Subject = y.Subject,
                 Score = y.Score
             };
    // or 
    var ls = ls1.Join(ls2, x=>x.Name, y=>y.Name, (x,y)=>new {
                 Id = x.Id,
                 Name = x.Name,
                 Subject = y.Subject,
                 Score = y.Score
             });

Left Outer Join

    var ls = from x in ls1
             join y in ls2 on x.Name equals y.Name into g
             from z in g.DefaultIfEmpty()
             select new {
                 Id = x.Id,
                 Name = x.Name,
                 Subject = z?.Subject,
                 Score = z?.Score
             };

GroupJoin

    var ls = from x in ls2
             group x by x.Subject into g
             select new {
                 Subject = g.Key,
                 MaxScore = g.Max(x=>x.Score)
             };

Order By

    var ls = from x in ls2
             orderby x.Subject,x.Score descending
             select x


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM