tnblog
首页
视频
资源
登录

多表分组,排序,混合查询的linq,lamdba语句

5393人阅读 2019/10/23 19:11 总访问:372072 评论:0 收藏:0 手机
分类: 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-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术