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") });


展开阅读全文

没有更多推荐了,返回首页