public override object GetGroupValue(object Row)
        {
            var val = Grouper.GetGroupValue(Row);

            if (val == null)
            {
                return(null);
            }
            var s = val.ToString();

            if (s.Length < Letters)
            {
                return(s);
            }
            return(s.Substring(0, Letters));
        }
            private void set()
            {
                Groups = null;
                GroupingInfo gi = Owner.groupon;

                if (gi == null)
                {
                    Rows = Owner.List;
                    return;
                }
                if (Owner.GroupSortDirection == SortOrder.None)
                {
                    Groups = new Dictionary <object, GroupRow>();
                }
                else
                {
                    GenericComparer <object> comparer = new GenericComparer <object>();
                    comparer.Descending = Owner.GroupSortDirection == SortOrder.Descending;
                    Groups = new SortedDictionary <object, GroupRow>(comparer);
                }
                foreach (object row in Owner)
                {
                    object   key = gi.GetGroupValue(row);
                    GroupRow gr;
                    if (!Groups.TryGetValue(key, out gr))
                    {
                        gr       = new GroupRow();
                        gr.Value = key;
                        Groups.Add(key, gr);
                    }
                    gr.List.Add(row);
                }

                //var groups = Owner.Cast<object>().GroupBy<object, object>(o => gr.GetGroupValue(o));
                int i = 0;

                Rows = new List <object>(Groups.Count + Owner.BaseCount);
                foreach (GroupRow g in Groups.Values)
                {
                    g.Finalize(i++);
                    Rows.Add(g);
                    foreach (object row in g.Rows)
                    {
                        Rows.Add(row);
                    }
                }
            }