示例#1
0
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }

            SummClass otherClass = obj as SummClass;

            if (otherClass != null)
            {
                if (this.OrderID == otherClass.OrderID && this.Subject == otherClass.Subject &&
                    this.Date == otherClass.Date)
                {
                    return(0);
                }
                else
                {
                    return(1);
                }
            }
            else
            {
                throw new Exception("object is not SummClass");
            }
        }
示例#2
0
        public static bool CheckOrderData(List <SummClass> list, Int32 OrderID)
        {
            List <SummClass> listFromDB = new List <SummClass>();

            using (ClickHouseConnection con = new ClickHouseConnection(CreateConnectionSettings()))
            {
                con.Open();
                //var cmd = con.CreateCommand();
                //cmd.CommandText = "select OrderID,Subject,Date,-1*SUM(Summ) from test.temp_table group by OrderID,Subject,Date";
                //Console.WriteLine(cmd.ExecuteNonQuery());
                var reader = con.CreateCommand($"select OrderID,Subject,Date, toDecimal64(SUM(Summ),2)  from test.temp_table where OrderID = {OrderID.ToString()} group by OrderID,Subject,Date having SUM(Summ) != 0").ExecuteReader();

                do
                {
                    while (reader.Read())
                    {
                        SummClass sc = new SummClass();

                        sc.OrderID = (Int32)reader.GetInt32(0);
                        sc.Subject = (String)reader.GetString(1);
                        sc.Date    = (DateTime)reader.GetDateTime(2);
                        sc.Summ    = (Decimal)reader.GetDecimal(3);

                        listFromDB.Add(sc);
                    }
                }while (reader.NextResult());

                con.Close();
            }

            List <SummClass> groupedList = new List <SummClass>();

            for (int i = 0; i < list.Count; i++)
            {
                var el = groupedList.Where(x => x.OrderID == list.ElementAt(i).OrderID &&
                                           x.Subject == list.ElementAt(i).Subject &&
                                           x.Date == list.ElementAt(i).Date).Select(x => x);

                if (el.Count() == 0)
                {
                    groupedList.Add(new SummClass {
                        OrderID = list.ElementAt(i).OrderID,
                        Subject = list.ElementAt(i).Subject, Date = list.ElementAt(i).Date,
                        Summ    = list.ElementAt(i).Summ
                    });
                }
                else
                if (el.Count() > 1)
                {
                    throw new Exception("smth goes wrong");
                }
                else
                {
                    el.ElementAt(0).Summ += list.ElementAt(i).Summ;
                }
            }


            // if(groupedList.Count() != listFromDB.Count())
            //  return false;
            //  else


            foreach (var el1 in listFromDB)
            {
                foreach (var el2 in groupedList)
                {
                    if (el1.OrderID == el2.OrderID && el1.Subject == el2.Subject &&
                        el1.Date == el2.Date)
                    {
                        if (el1.Summ != el2.Summ)
                        {
                            return(false);
                        }
                    }
                }
            }


            return(true);
        }