запросить несколько условий с помощью Entity Framework - PullRequest
0 голосов
/ 07 ноября 2019

Как запросить несколько условий, и когда одно из условий пусто игнорируется, а другие условия применяются?

Это мой код

            var SalesAsInt = Convert.ToInt32(txtSalesNo.Text);
            var YearAsInt = Convert.ToInt32(cbxYear.Text);
            var MonthAsInt = Convert.ToInt32(cbxMonth.Text);
            var DayaAsInt = Convert.ToInt32(cbxDay.Text);
            using (var dbcontext = new Database.SalesEntities())
            {
                BindingSource VSalesIncome = new BindingSource();
                VSalesIncome.DataSource = dbcontext
                                 .VSalesIncomes
                                 .Where(u => u.SalesCode  == SalesAsInt )
                                 .Where(u => u.YearIncome == YearAsInt)
                                 .Where(u => u.MonthIncome == MonthAsInt)
                                 .Where(u => u.DayIncome == DayaAsInt)
                                 .ToList();

                dgvadministration.DataSource = VSalesIncome;
            }

Ошибка, когда любое текстовое поле пусто

System.FormatException: 'Input string was not in a correct format.'

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Попробуйте следующие два изменения:

int? SalesAsInt = (txtSalesNo.Text == string.Empty) ? null : (int?)Convert.ToInt32(txtSalesNo.Text);

.Where(u => (SalesAsInt == null) ? true : u.SalesCode  == SalesAsInt )
0 голосов
/ 07 ноября 2019

Вы можете заключить свои Where методы в if операторы

var query = VSalesIncome.DataSource = dbcontext.VSalesIncomes
if (SalesAsInt > 0)
    query = query.Where(u => u.SalesCode  == SalesAsInt)
// repeat as needed
VSalesIncome.DataSource = query.ToList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...