示例#1
0
        private void btnQuery_Click(object sender, EventArgs e)
        {
            if (dgvQueries.Rows.Count == 0)
            {
                Control.Exclamation("Список запросов пуст.", "Запросы");
                return;
            }
            reportIsReady = true;
            int row = 0;

            switch (cbEntities.Text)
            {
            case "Объекты":
                Control.tempObjectResult = Control.container.Objects.ToList();
                do
                {
                    // Значения в таблице запросов
                    int      intValue;
                    string   stringValue;
                    DateTime dateValue;

                    switch (dgvQueries.Rows[row].Cells[1].Value.ToString())     // Атрибут в таблице запросов
                    {
                    case "ID":
                        intValue = int.Parse(dgvQueries.Rows[row].Cells[3].Value.ToString());
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Id == intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Id == intValue)).ToList(); break;

                        case "Не равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Id != intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Id != intValue)).ToList(); break;

                        case "Больше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Id > intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Id > intValue)).ToList(); break;

                        case "Меньше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Id < intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Id < intValue)).ToList(); break;
                        }
                        break;

                    case "Название":
                        stringValue = dgvQueries.Rows[row].Cells[3].Value.ToString();
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Name == stringValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Name == stringValue)).ToList(); break;

                        case "Не равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Name != stringValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Name != stringValue)).ToList(); break;

                        case "Больше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => string.Compare(x.Name, stringValue) > 0).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => string.Compare(x.Name, stringValue) > 0)).ToList(); break;

                        case "Меньше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => string.Compare(x.Name, stringValue) < 0).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => string.Compare(x.Name, stringValue) < 0)).ToList(); break;
                        }
                        break;

                    case "Описание":
                        stringValue = dgvQueries.Rows[row].Cells[3].Value.ToString();
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Description == stringValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Description == stringValue)).ToList(); break;

                        case "Не равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.Description != stringValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.Description != stringValue)).ToList(); break;

                        case "Больше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => string.Compare(x.Description, stringValue) > 0).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => string.Compare(x.Description, stringValue) > 0)).ToList(); break;

                        case "Меньше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => string.Compare(x.Description, stringValue) < 0).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => string.Compare(x.Description, stringValue) < 0)).ToList(); break;
                        }
                        break;

                    case "Средняя оценка":
                        intValue = int.Parse(dgvQueries.Rows[row].Cells[3].Value.ToString());
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.AvarageMark == (double)intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.AvarageMark == (double)intValue)).ToList(); break;

                        case "Не равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.AvarageMark != (double)intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.AvarageMark != (double)intValue)).ToList(); break;

                        case "Больше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.AvarageMark > (double)intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.AvarageMark > (double)intValue)).ToList(); break;

                        case "Меньше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.AvarageMark < (double)intValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.AvarageMark < (double)intValue)).ToList(); break;
                        }
                        break;

                    case "Дата создания":
                        dateValue = DateTime.Parse(dgvQueries.Rows[row].Cells[3].Value.ToString()).Date;
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.CreatingDate == dateValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.CreatingDate == dateValue)).ToList(); break;

                        case "Не равно": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.CreatingDate != dateValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.CreatingDate != dateValue)).ToList(); break;

                        case "Больше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.CreatingDate > dateValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.CreatingDate > dateValue)).ToList(); break;

                        case "Меньше": Control.tempObjectResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempObjectResult.Where(x => x.CreatingDate < dateValue).ToList() : Control.tempObjectResult.Union(Control.container.Objects.Where(x => x.CreatingDate < dateValue)).ToList(); break;
                        }
                        break;
                    }
                } while (dgvQueries.Rows.Count != ++row);
                if (Control.tempObjectResult.Count != 0)
                {
                    CompleteForm.dgvObjectResults(this);
                }
                else
                {
                    dgvResult.DataSource = null;
                    Control.Exclamation("По заданному запросу не найдено ни одного объекта.", "Запрос объекта");
                }
                break;     // case "Объекты":

            case "Коллекции":
                Control.tempCollectionResult = Control.container.Collections.ToList();
                do
                {
                    // Значения в таблице запросов
                    int      intValue;
                    string   stringValue;
                    DateTime dateValue;

                    switch (dgvQueries.Rows[row].Cells[1].Value.ToString())     // Атрибут в таблице запросов
                    {
                    case "ID":
                        intValue = int.Parse(dgvQueries.Rows[row].Cells[3].Value.ToString());
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Id == intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Id == intValue)).ToList(); break;

                        case "Не равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Id != intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Id != intValue)).ToList(); break;

                        case "Больше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Id > intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Id > intValue)).ToList(); break;

                        case "Меньше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Id < intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Id < intValue)).ToList(); break;
                        }
                        break;

                    case "Название":
                        stringValue = dgvQueries.Rows[row].Cells[3].Value.ToString();
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Name == stringValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Name == stringValue)).ToList(); break;

                        case "Не равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Name != stringValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Name != stringValue)).ToList(); break;

                        case "Больше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => string.Compare(x.Name, stringValue) > 0).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => string.Compare(x.Name, stringValue) > 0)).ToList(); break;

                        case "Меньше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => string.Compare(x.Name, stringValue) < 0).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => string.Compare(x.Name, stringValue) < 0)).ToList(); break;
                        }
                        break;

                    case "Описание":
                        stringValue = dgvQueries.Rows[row].Cells[3].Value.ToString();
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Description == stringValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Description == stringValue)).ToList(); break;

                        case "Не равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.Description != stringValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.Description != stringValue)).ToList(); break;

                        case "Больше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => string.Compare(x.Description, stringValue) > 0).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => string.Compare(x.Description, stringValue) > 0)).ToList(); break;

                        case "Меньше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => string.Compare(x.Description, stringValue) < 0).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => string.Compare(x.Description, stringValue) < 0)).ToList(); break;
                        }
                        break;

                    case "Средняя оценка":
                        intValue = int.Parse(dgvQueries.Rows[row].Cells[3].Value.ToString());
                        MessageBox.Show("средняя оценка = " + intValue);
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.AverageMark == (double)intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.AverageMark == (double)intValue)).ToList(); break;

                        case "Не равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.AverageMark != (double)intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.AverageMark != (double)intValue)).ToList(); break;

                        case "Больше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.AverageMark > (double)intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.AverageMark > (double)intValue)).ToList(); break;

                        case "Меньше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.AverageMark < (double)intValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.AverageMark < (double)intValue)).ToList(); break;
                        }
                        break;

                    case "Дата создания":
                        dateValue = DateTime.Parse(dgvQueries.Rows[row].Cells[3].Value.ToString()).Date;
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.CreatingDate == dateValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.CreatingDate == dateValue)).ToList(); break;

                        case "Не равно": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.CreatingDate != dateValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.CreatingDate != dateValue)).ToList(); break;

                        case "Больше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.CreatingDate > dateValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.CreatingDate > dateValue)).ToList(); break;

                        case "Меньше": Control.tempCollectionResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempCollectionResult.Where(x => x.CreatingDate < dateValue).ToList() : Control.tempCollectionResult.Union(Control.container.Collections.Where(x => x.CreatingDate < dateValue)).ToList(); break;
                        }
                        break;
                    }
                } while (dgvQueries.Rows.Count != ++row);
                if (Control.tempCollectionResult.Count != 0)
                {
                    CompleteForm.dgvCollectionResults(this);
                }
                else
                {
                    dgvResult.DataSource = null;
                    Control.Exclamation("По заданному запросу не найдено ни одной коллекции.", "Запрос коллекции");
                }
                break;     // case "Коллекции":

            case "Пользователи":
                Control.tempUserResult = Control.container.Users.ToList();
                do
                {
                    // Значения в таблице запросов
                    int    intValue;
                    string stringValue;

                    switch (dgvQueries.Rows[row].Cells[1].Value.ToString())     // Атрибут в таблице запросов
                    {
                    case "ID":
                        intValue = int.Parse(dgvQueries.Rows[row].Cells[3].Value.ToString());
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => x.Id == intValue).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => x.Id == intValue)).ToList(); break;

                        case "Не равно": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => x.Id != intValue).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => x.Id != intValue)).ToList(); break;

                        case "Больше": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => x.Id > intValue).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => x.Id > intValue)).ToList(); break;

                        case "Меньше": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => x.Id < intValue).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => x.Id < intValue)).ToList(); break;
                        }
                        break;

                    case "Имя пользователя":
                        stringValue = dgvQueries.Rows[row].Cells[3].Value.ToString();
                        switch (dgvQueries.Rows[row].Cells[2].Value.ToString())
                        {
                        case "Равно": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => x.Name == stringValue).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => x.Name == stringValue)).ToList(); break;

                        case "Не равно": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => x.Name != stringValue).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => x.Name != stringValue)).ToList(); break;

                        case "Больше": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => string.Compare(x.Name, stringValue) > 0).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => string.Compare(x.Name, stringValue) > 0)).ToList(); break;

                        case "Меньше": Control.tempUserResult = (row == 0 || dgvQueries.Rows[row].Cells[4].Value.ToString() == "And") ? Control.tempUserResult.Where(x => string.Compare(x.Name, stringValue) < 0).ToList() : Control.tempUserResult.Union(Control.container.Users.Where(x => string.Compare(x.Name, stringValue) < 0)).ToList(); break;
                        }
                        break;
                    }
                } while (dgvQueries.Rows.Count != ++row);
                if (Control.tempUserResult.Count != 0)
                {
                    CompleteForm.dgvUserResult(this);
                }
                else
                {
                    dgvResult.DataSource = null;
                    Control.Exclamation("По заданному запросу не найдено ни одного пользователя.", "Запрос пользователя");
                }
                break;     // case "Пользователи":

            default:
                break;
            }
        }