Linq 分组,求和,多个字段排序,取前10条

    List<ProTalkBackEntity> GetProData()
    {
        List<ProTalkBackEntity> list =talkbll.GetProTalkBack(Convert.ToDateTime(txtStartDate.Text), Convert.ToDateTime(txtEndDate.Text));
        List<ProTalkBackEntity> proList=new List<ProTalkBackEntity>();

        var query = list.GroupBy(t => t.ProductName).Select(p => new
        {
            ProductName = p.Key,
            hascomment = p.Sum(x => x.hascomment),
            Ding = p.Sum(x => x.Ding),
            Zan = p.Sum(x => x.Zan)
        }).OrderByDescending(t => t.hascomment).ThenByDescending(t => t.Zan).ThenByDescending(t => t.Ding).Take(10);// 赞,顶,点评最大的前10条数据
        foreach (var item in query)
        {
            proList.Add(new ProTalkBackEntity() { ProductName = item.ProductName, hascomment = item.hascomment, Ding = item.Ding, Zan = item.Zan });
        }
        return proList;
    }


    Dictionary<string, List<LocationTalkEntiy>> GetLocationData()
    {
        List<LocationTalkEntiy> list = talkbll.GetLocationTalkBack(Convert.ToDateTime(txtStartDate.Text), Convert.ToDateTime(txtEndDate.Text));
        List<LocationTalkEntiy> proList = new List<LocationTalkEntiy>();
        Dictionary<string, List<LocationTalkEntiy>> Dic = new Dictionary<string, List<LocationTalkEntiy>>();

        var query = list.GroupBy(t => t.LOCATIONNAME).Select(p => new
        {
            LOCATIONNAME = p.Key,
            hascomment = p.Sum(x => x.hascomment)
        }).OrderByDescending(t => t.hascomment).Take(10);// 目的地点评最大的前10条数据
        foreach (var item in query)
        {
            proList.Add(new LocationTalkEntiy() { hascomment = item.hascomment, LOCATIONNAME=item.LOCATIONNAME });
        }
        if (proList != null && proList.Count > 0)
        {
            for (int i = 0; i < 2; i++)
            {//控制表格输出格式
                if (i == 0)
                    Dic.Add("", proList);
                else
                    Dic.Add(this.txtStartDate.Text + "~" + this.txtEndDate.Text, proList);

            }
        }
        return Dic;

多个字段分组

                        //一天当中手机号打入多次,只算一次呼入数,所以这边用linq去除重复
                        var query = listlog.GroupBy(t => new { t.CallPhone, CallTime = t.CallTime.ToString("yyyy-MM-dd") });


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值