lambda ,Linq 实现三表分组

lambda 三表分组

  OAEntities db = new OAEntities();

           var send = db.Users.GroupJoin(db.User_Parent, a => a.Id, b => b.UsersId, (x, y) => new
           {
               x,
               y
           }).SelectMany(a => a.y, (x, y) => new
           {
               id = x.x.Id,
               userName = x.x.UserName,
               Father = y.Father,
           }).GroupJoin(db.Score, a => a.id, b => b.UsersId, (x, y) => new
           {
               id = x.id,
               userName = x.userName,
               Father = x.Father,
               y
           }).SelectMany(a => a.y, (x, y) => new
           {
               id = x.id,
               userName = x.userName,
               Father = x.Father,
               sub = y.Sub,
               score = y.Score1
           }).GroupBy(a => a.id).Select(a => new User_sc
           {
               id = a.Key,
               max = a.Max(b => b.score),
               min = a.Min(b => b.score),
               count = a.Count(),
               avg = a.Average(b => b.score),
               sum = a.Sum(b => b.score),
               userName = a.Select(b => b.userName).FirstOrDefault(),
               father = a.Select(b => b.Father).FirstOrDefault()

           });


Linq 三表分组

 OAEntities db = new OAEntities();
            var query = from u in db.Users
                        join ui in db.User_Parent on u.Id equals ui.UsersId
                        join uu in db.Score on u.Id equals uu.UsersId
                        select new
                        {
                            father = ui.Father,
                            id = u.Id,
                            userName = u.UserName,
                            score = uu.Score1
                        } into jempt
                        group jempt by new { jempt.father, jempt.userName, jempt.id } into jempg
                        orderby jempg.Sum(b => b.score) ascending
                        select new User_sc
                        {


                            father = jempg.Key.father,
                            userName = jempg.Key.userName,
                            id = jempg.Key.id,
                            avg = jempg.Average(b => b.score),
                            sum = jempg.Sum(b => b.score),
                            count = jempg.Count(),
                            max = jempg.Max(b => b.score),
                            min = jempg.Min(b => b.score),
                        };

猜你喜欢

转载自blog.csdn.net/zhangxin97/article/details/78926011
今日推荐