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"); } }
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); }