分类:
Mvc EF框架
多表分组,排序,混合查询
例如:显示每个人的父亲,对应的分数,考试的科数
linq语句
var query=from u in oae.users
join p in oae.User_Parent on u.Id equals p.UserId into
upjointemp from leftjoin in upjointemp.DefaultFEpty() //left join 语句
join s in oae.User_score on u.Id equals s.UserId
select new
{
UserName=u.UserName,
Father=leftjoin.Father,
Score=s.score
} into jointemp
group jointemp by new {jointemp.UserName,jointemp.Father}
into a
slect new AllScoreModel
{
UserName=a.key.UserName,
Father=a.key.Father ?? "无",
Count=a.Count(),
max=a.Max(b=>b.score),
min=a.Min(b=>b.score),
sum=a.Sum(b=>b.score),
avg=a.Average(b=>b.score)
}
List<AllScoreModel> result=query.ToList();
//lamdba
var query2 = oae.Users.GroupJoin(oae.User_Parent, a => a.Id, b => b.UserId, (a, b) => new
{
user = a,
parent = b
}).SelectMany(a => a.parent.DefaultIfEmpty(), (a, b) => new
{
uid = a.user.Id,
UserName = a.user.UserName,
Father = b.Father
}).Join(oae.User_Score, a => a.uid, b => b.UserId, (a, b) => new
{
UserName = a.UserName,
Father = a.Father,
score = b.Score
}).GroupBy(a => new { a.UserName, a.Father}).Select(a => new AllScoreModel
{
UserName = a.Key.UserName,
Father = a.Key.Father ?? "无父",
Count = a.Count(),
max = a.Max(b => b.score),
min = a.Min(b => b.score),
sum = a.Sum(b => b.score),
avg = a.Average(b => b.score)
});小结:
1,前台字符串输入提示
@{
item.sub=item.sub ?? "<span style='color:red;'>暂无科目</span>";
@Html.Raw(item.sub) @*作用:让引号里的标签被识别*@
}
2, <td>
@* 保留2位小数*@
@item.avg.Value.ToString("f2")
@* 四舍五入*@
@* @Math.Round((double)item.avg,2) *@
</td>评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术