public IEnumerable <Result> GetRange(int idStart, int idEnd) { //Подключение к БД. SqlDataReader reader = null; SqlConnection myConnection = new SqlConnection(); myConnection.ConnectionString = connectionString; SqlCommand sqlCmd = new SqlCommand(); sqlCmd.CommandType = CommandType.Text; //Команда выборки. sqlCmd.CommandText = "SELECT * FROM Workers WHERE WorkerID BETWEEN " + idStart.ToString() + " AND " + idEnd.ToString(); sqlCmd.Connection = myConnection; myConnection.Open(); reader = sqlCmd.ExecuteReader(); List <Result> result = new List <Result> { }; while (reader.Read()) { if (String.Compare(reader.GetValue(3).ToString(), "time", true) == 0) { //Расчет средней зарплаты у рабочих с повременной ставкой TimePayWorker tp = new TimePayWorker(Convert.ToDecimal(reader.GetValue(4))); decimal f = tp.AveragePay(); //Запись в коллекцию. result.Add(new Result(Convert.ToInt32(reader.GetValue(0)), reader.GetValue(1).ToString(), reader.GetValue(2).ToString(), reader.GetValue(3).ToString(), f.ToString())); } else { result.Add(new Result(Convert.ToInt32(reader.GetValue(0)), reader.GetValue(1).ToString(), reader.GetValue(2).ToString(), reader.GetValue(3).ToString(), Convert.ToDecimal(reader.GetValue(4)).ToString())); } //Сортировка коллекции по заданному критерию result.Sort(delegate(Result result1, Result result2) { int l = result2.Sum.CompareTo(result1.Sum); if (l == 0) { l = result1.WorkerName.CompareTo(result2.WorkerName); } return(l); }); } return(result); }
public IEnumerable <string> GetSum() { SqlDataReader reader = null; SqlConnection myConnection = new SqlConnection(); myConnection.ConnectionString = connectionString; SqlCommand sqlCmd = new SqlCommand(); sqlCmd.CommandType = CommandType.Text; sqlCmd.CommandText = "SELECT * FROM Workers"; sqlCmd.Connection = myConnection; myConnection.Open(); reader = sqlCmd.ExecuteReader(); decimal sum = 0.00m; while (reader.Read()) { if (String.Compare(reader.GetValue(3).ToString(), "time", true) == 0) { TimePayWorker tp = new TimePayWorker(Convert.ToDecimal(reader.GetValue(4))); decimal t = tp.AveragePay(); sum = sum + t; } else { sum = sum + Convert.ToDecimal(reader.GetValue(4)); } } return(new string[] { sum.ToString() }); }
public IEnumerable <Result> GetWorkers() { SqlDataReader reader = null; SqlConnection myConnection = new SqlConnection(); myConnection.ConnectionString = connectionString; SqlCommand sqlCmd = new SqlCommand(); sqlCmd.CommandType = CommandType.Text; sqlCmd.CommandText = "SELECT * FROM Workers"; sqlCmd.Connection = myConnection; myConnection.Open(); reader = sqlCmd.ExecuteReader(); List <Result> result = new List <Result> { }; while (reader.Read()) { if (String.Compare(reader.GetValue(3).ToString(), "time", true) == 0) { //Расчет средней зарплаты у рабочих с повременной ставкой TimePayWorker tp = new TimePayWorker(Convert.ToDecimal(reader.GetValue(4))); decimal f = tp.AveragePay(); //Запись в коллекцию. result.Add(new Result(Convert.ToInt32(reader.GetValue(0)), reader.GetValue(1).ToString(), reader.GetValue(2).ToString(), reader.GetValue(3).ToString(), f.ToString())); } else { result.Add(new Result(Convert.ToInt32(reader.GetValue(0)), reader.GetValue(1).ToString(), reader.GetValue(2).ToString(), reader.GetValue(3).ToString(), Convert.ToDecimal(reader.GetValue(4)).ToString())); } //Сортировка коллекции по заданному критерию result.Sort(delegate(Result result1, Result result2) { int l = result2.Sum.CompareTo(result1.Sum); if (l == 0) { l = result1.WorkerName.CompareTo(result2.WorkerName); } return(l); }); } //Сохранение 3х самых высокооплачиваемых работников к XML файл. //Файл разсположен в каталоге программы. Result[] workers = new Result[] { result[0], result[1], result[2] }; XmlSerializer ser = new XmlSerializer(typeof(Result[])); FileStream file = new FileStream("Workers.xml", FileMode.Create, FileAccess.Write, FileShare.None); ser.Serialize(file, workers); file.Close(); return(result); }