/// <summary> /// Метод устанваливает ставки /// </summary> /// <param name="col"></param> public static void CalculateGame(IEnumerable <Setter> col) { Bets = new List <Bet>(); foreach (var item in col) { var g = Gamblers.Find(s => s.Number == item.Gambler); //Выбираем игрока var b = Bugs.Find(s => s.Number == item.Bug); //ВЫбираем участника var row = new Bet(b, g, item.Bet); //создаем ставку Bets.Add(row); //добавляем ставку } //Генерируем случайные числа для каждого участника foreach (var item in Bugs) { item.RandomPosition(); } //Определяем побудителей //-------------- первое место ----------------- var Positions = Bugs.OrderByDescending(s => s.Position).Select(s => s.Position).Distinct().ToList();//Отсортировали по убыванию взяли тока уникальные значения var bugs = Bugs.Where(s => s.Position == Positions[0]); var res = ""; if (bugs.Count() > 1) { res = bugs.Aggregate("В забеге победили участники с номерами ", (current, item) => current + " " + item.Number); } else { res = "В забеге победил участник с номером " + bugs.First().Number; } ResultGames.Add(res + "\n"); //добавили в историю var summ = Bets.Sum(s => s.Amount); //сумма всех ставок var first = (summ / 2) / bugs.Count(); var totalFirst = (summ / 2); if (bugs.Count() > 1) { res = "1-е место. Выйгрышь составил " + first.ToString("F2") + ". Количество победителей: " + bugs.Count(); } else { res = "1-е место. Выйгрышь составил " + first.ToString("F2") + ". Количество победителей: 1"; } ResultGames.Add(res + "\n");//добавили в историю //------------- второе место ----------------- bugs = Bugs.Where(s => s.Position == Positions[1]); summ = summ - totalFirst;//сумма всех ставок var two = (summ * 0.75) / bugs.Count(); var totalTwo = (summ * 0.75); if (bugs.Count() > 1) { res = "2-е место. Выйгрышь составил " + two.ToString("F2") + ". Количество победителей: " + bugs.Count(); } else { res = "2-е место. Выйгрышь составил " + two.ToString("F2") + ". Количество победителей: 1"; } ResultGames.Add(res + "\n");//добавили в историю //-----------------третье место-------------- bugs = Bugs.Where(s => s.Position == Positions[1]); summ = summ - (float)totalTwo;//сумма всех ставок var free = (summ) / bugs.Count(); if (bugs.Count() > 1) { res = "3-е место. Выйгрышь составил " + free.ToString("F2") + ". Количество победителей: " + bugs.Count(); } else { res = "3-е место. Выйгрышь составил " + free.ToString("F2") + ". Количество победителей: 1"; } ResultGames.Add(res + "\n");//добавили в историю }
public virtual int[] GetChangedBugIds(DateTime?lastSyncDate) { return(Bugs.Where(x => DateTime.Parse(x.creation_ts) > (lastSyncDate ?? DateTime.MinValue)).Select(x => int.Parse(x.bug_id)).ToArray()); }