Пример #1
0
        //为月份比较柱形图提供数据列表
        public static List <MonthlyData> DataForMonthComparison(Models.Book book, DateTimeOffset begin, DateTimeOffset end, int offset, bool receiveOrPay)
        {
            List <MonthlyData> data = new List <MonthlyData>();

            //记录要显示的几个月份
            for (int i = 0; i < offset; i++)
            {
                data.Add(new MonthlyData {
                    Value = 0, Month = begin.Year.ToString("0000") + begin.Month.ToString("00")
                });
                begin = begin.AddMonths(1);
            }
            begin = begin.AddMonths(-offset);

            //记录月份对应的总收入/支出
            foreach (var ac in book.accounts)
            {
                //去掉不在当前所选时间范围,或有不同收支类型的记录
                if (ac.time.CompareTo(begin.DateTime) < 0 || ac.time.CompareTo(end.DateTime) >= 0 || ac.receiptOrPay != receiveOrPay)
                {
                    continue;
                }
                string acMonth = ac.time.Year.ToString("0000") + ac.time.Month.ToString("00");
                data.Find(d => (d.Month.Equals(acMonth))).Value += ac.money;
            }

            foreach (var d in data)
            {
                d.Month = d.Month.Substring(d.Month.Length - 2) + "月";
            }
            return(data);
        }
Пример #2
0
        //为收支类型比较饼形图提供数据列表
        public static List <Data> DataForTypeComparison(Models.Book book, DateTimeOffset begin, DateTimeOffset end, bool receiveOrPay)
        {
            List <Data> data = new List <Data>();

            foreach (var ac in book.accounts)
            {
                if (ac.time.CompareTo(begin.DateTime) < 0 || ac.time.CompareTo(end.DateTime) >= 0 || ac.receiptOrPay != receiveOrPay)
                {
                    continue;
                }
                //Lambda表达式,表示Predicate<Data>委托
                if (!data.Exists(d => (d.Category == ac.type)))
                {
                    data.Add(new Data {
                        Value = ac.money, Category = ac.type
                    });
                }
                else
                {
                    data.Find(d => (d.Category == ac.type)).Value += ac.money;
                }
            }

            //排序,以便饼形图上不同大小的扇形可以有顺序地沿时针方向排列
            data.Sort(delegate(Data x, Data y)
            {
                return(y.Value.CompareTo(x.Value));
            });

            foreach (var d in data)
            {
                d.Category = d.Category + " " + d.Value.ToString() + "元";
            }

            return(data);
        }
Пример #3
0
            }                                                               //每个月的支出记录

            public TwoDatas(Models.Book book, DateTimeOffset begin, DateTimeOffset end, int offset)
            {
                Receive = DataForMonthComparison(book, begin, end, offset, false);
                Pay     = DataForMonthComparison(book, begin, end, offset, true);
            }