Пример #1
0
        public static string ToString <TValue>(this IEnumerable <KeyValuePair <TValue, Procent> > list, string lineBreaker, int howMuchStringsToShow)
        {
            var sb = new StringBuilder();
            //if (list.Count() <= howMuchStringsToShow || howMuchStringsToShow == 0)
            //{
            //    bool isFirstRow = true;
            //    foreach (var item in list)
            //    {
            //        if (!isFirstRow)
            //            sb.Append(lineBreaker);
            //        isFirstRow = false;
            //        sb.Append(item.Key).Append(": ").Append(item.Value);
            //    }
            //}
            //else  // there is at least howMuchStringsToShow + 1 elements

            bool isFirstRow        = true;
            bool isAddedAnyStrings = false;
            //for (int i = 0; i < howMuchStringsToShow; i++)
            int i         = 0;
            var othersSum = new Procent(0f);

            foreach (var item in list)
            {
                if (i < howMuchStringsToShow || howMuchStringsToShow == 0)
                {
                    if (!isFirstRow)
                    {
                        sb.Append(lineBreaker);
                    }
                    isFirstRow = false;
                    sb.Append(item.Key).Append(": ").Append(item.Value);
                    isAddedAnyStrings = true;
                }
                else
                {
                    othersSum.Add(item.Value);
                }
                //  break;
                i++;
            }

            //for (int i = howMuchStringsToShow; i < list.Count; i++)
            //    othersSum.Add(list[i].Value);
            if (othersSum.isNotZero())
            {
                sb.Append(lineBreaker);
                sb.Append("Others: ").Append(othersSum);
            }

            if (isAddedAnyStrings)
            {
                return(sb.ToString());
            }
            else
            {
                return("none");
            }
        }