lambda 三表分组
OAEntities db = new OAEntities();
{
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),
};