コード例 #1
0
ファイル: Report_Movement.cs プロジェクト: Camel-RD/Klons
        public Dictionary <RepGroupKey, EventRepInfo> SumGroupTotals(int k,
                                                                     List <EventRepInfo> list, List <string> keys, List <int> ids)
        {
            var    ret = new Dictionary <RepGroupKey, EventRepInfo>();
            string list_cur = null, key_cur = null;

            for (int i = 0; i < list.Count; i++)
            {
                var ev_cur = list[i];
                list_cur = ev_cur.GetSField(k);
                int pos = keys.BinarySearch(list_cur);
                if (pos >= 0 && pos < keys.Count)
                {
                    pos += 1;
                }
                if (pos < 0)
                {
                    pos = ~pos;
                }
                pos--;
                if (pos == -1)
                {
                    continue;
                }
                EventRepInfo ev_dic = null;
                while (pos >= 0)
                {
                    key_cur = keys[pos];
                    if (!list_cur.StartsWith(key_cur))
                    {
                        break;
                    }
                    var gk = new RepGroupKey(5);
                    gk.Fields[0] = key_cur;
                    if (!ret.TryGetValue(gk, out ev_dic))
                    {
                        ev_dic = new EventRepInfo();
                        ev_dic.FieldSortOrder = ev_cur.FieldSortOrder;
                        ev_dic.SetFieldId(k, ids[pos]);
                        ev_dic.SetSField(k, key_cur);
                        ev_dic.RCat1 = key_cur;
                        ev_dic.SetName1(k);
                        ev_dic.IsTotal = true;
                        ret[gk]        = ev_dic;
                    }
                    ev_dic.Add(ev_cur);

                    pos--;
                }
            }
            return(ret);
        }