protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownCountsBySoft_SUM> )
            {
                var temp  = list as List <D_StatDownCountsBySoft_SUM>;
                var list2 = temp.OrderByDescending(p => p.StatDate).ToList();
                foreach (D_StatDownCountsBySoft_SUM obj in list2)
                {
                    List <string> values = new List <string>();
                    values.Add(obj.StatDate.ToString("yyyy-MM-dd"));
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.UserCount));
                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.DownCount * 1.0 / (obj.UserCount == 0 ? 1 : obj.UserCount)));

                    values.Add(UtilityHelp.FormatNum <int>(obj.NewUserDownCount));
                    values.Add(UtilityHelp.FormatNum <int>(obj.NewUserCount));
                    values.Add(UtilityHelp.GetDecimalDataString(obj.NewUserDownCount * 1.0 / (obj.NewUserCount == 0 ? 1 : obj.NewUserCount)));

                    int user = obj.UserCount - obj.NewUserCount;
                    values.Add(UtilityHelp.FormatNum <int>(obj.DownCount - obj.NewUserDownCount));
                    values.Add(UtilityHelp.FormatNum <int>(user));
                    values.Add(
                        UtilityHelp.GetDecimalDataString <double>((obj.DownCount - obj.NewUserDownCount) * 1.0 / (user == 0 ? 1 : user)));

                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.DownCountExceptAllUpdating * 1.0 / (obj.UserCountExceptAllUpdating == 0 ? 1 : obj.UserCountExceptAllUpdating)));

                    values.Add(UtilityHelp.GetDecimalDataString <double>((obj.DownCount - obj.DownCountExceptAllUpdating) * 1.0 / obj.UserCountUpdateing));
                    tempList.Add(values);
                }
            }
            return(tempList);
        }
        private string GetYValue(D_StatDownCountsBySoft_SUM item, int showtype)
        {
            string value = item.DownCount.ToString();

            switch (showtype)
            {
            case 2:
                value = item.UserCount.ToString();
                break;

            case 3:
                value = UtilityHelp.GetDecimalDataString(item.DownCount * 1.0 / (item.UserCount == 0?1:item.UserCount));
                break;
            }
            return(value);
        }
        protected override List <List <string> > ObjectParseListFillDetailTable <T>(List <T> list, bool DetailEqChart = true)
        {
            var tempList = new List <List <string> >();

            if (list is List <D_StatDownCountsBySoft_SUM> )
            {
                var temp  = list as List <D_StatDownCountsBySoft_SUM>;
                var list2 = temp.OrderByDescending(p => p.StatDate).ToList();
                foreach (D_StatDownCountsBySoft_SUM obj in list2)
                {
                    List <string> values = new List <string>();
                    values.Add(obj.StatDate.ToString("yyyy-MM-dd"));
                    values.Add(UtilityHelp.GetDecimalDataString(obj.NewUserDownCount * 1.0 / (obj.NewUserCount == 0 ? 1 : obj.NewUserCount)));
                    int user = obj.UserCount - obj.NewUserCount;
                    values.Add(
                        UtilityHelp.GetDecimalDataString <double>((obj.DownCount - obj.NewUserDownCount) * 1.0 / (user == 0 ? 1 : user)));
                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.DownCount * 1.0 / (obj.UserCount == 0 ? 1 : obj.UserCount)));

                    //去除更新人均分发
                    int userupdateex = obj.UserCountExceptAllUpdating - obj.NewUserCountExceptAllUpdating;
                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.NewUserDownCountExceptAllUpdating * 1.0 / (obj.NewUserCountExceptAllUpdating == 0 ? 1 : obj.NewUserCountExceptAllUpdating)));

                    values.Add(UtilityHelp.GetDecimalDataString <double>((obj.DownCountExceptAllUpdating - obj.NewUserDownCountExceptAllUpdating) * 1.0 / (userupdateex == 0 ? 1 : userupdateex)));
                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.DownCountExceptAllUpdating * 1.0 / (obj.UserCountExceptAllUpdating == 0 ? 1 : obj.UserCountExceptAllUpdating)));

                    values.Add(UtilityHelp.GetDecimalDataString <double>(obj.DownCountBySlienceUpdating * 1.0 / obj.UserCountSilenceUpdateing));
                    values.Add(UtilityHelp.GetDecimalDataString <double>((obj.DownCount - obj.DownCountExceptAllUpdating) * 1.0 / obj.UserCountUpdateing));
                    tempList.Add(values);
                }
                if (list2.Count != 0)
                {
                    List <string> meavValues = new List <string>();
                    meavValues.Add("均值");
                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => (obj.NewUserDownCount * 1.0 / (obj.NewUserCount == 0 ? 1 : obj.NewUserCount))).Average()));
                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => (obj.DownCount - obj.NewUserDownCount) * 1.0 / (obj.UserCount - obj.NewUserCount == 0 ? 1 : obj.UserCount - obj.NewUserCount)).Average()));
                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => (obj.DownCount * 1.0 / (obj.UserCount == 0 ? 1 : obj.UserCount))).Average()));
                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => (obj.NewUserDownCountExceptAllUpdating * 1.0 / (obj.NewUserCountExceptAllUpdating == 0 ? 1 : obj.NewUserCountExceptAllUpdating))).Average()));
                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => ((obj.DownCountExceptAllUpdating - obj.NewUserDownCountExceptAllUpdating) * 1.0 / (obj.UserCountExceptAllUpdating - obj.NewUserCountExceptAllUpdating == 0 ? 1 : obj.UserCountExceptAllUpdating - obj.NewUserCountExceptAllUpdating))).Average()));

                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => (obj.DownCountExceptAllUpdating * 1.0 / (obj.UserCountExceptAllUpdating == 0 ? 1 : obj.UserCountExceptAllUpdating))).Average()));
                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => (obj.DownCountBySlienceUpdating * 1.0 / obj.UserCountSilenceUpdateing)).Average()));
                    meavValues.Add(UtilityHelp.GetDecimalDataString <double>(list2.Select(obj => (obj.DownCount - obj.DownCountExceptAllUpdating) * 1.0 / obj.UserCountUpdateing).Average()));
                    tempList.Add(meavValues);
                }
            }
            return(tempList);
        }