Получить список данных из столбца из базы данных, в зависимости от данных в другом столбце - PullRequest
0 голосов
/ 24 февраля 2020

Des c: В контроллере я загружаю список сверхурочных из базы данных (SQL Server / Entity Framework) и суммирую его до одной переменной (она работает сейчас).

Проблема: Мне нужно выбрать данные из базы данных (списка) из столбца «Минус», но только в том случае, если в столбце «выпадающий список» выбран параметр «2».

И вычтите сумму загруженных данных из моей текущей общей суммы.

Контроллер:

var userName = "MIPA";
var numberYear = 2020;
var numberMonth = 6;

// downloading the overtime list from each previous month from the database
var overtimeListVariable = _ecpContext.Card
                                      .Where(x => x.Login == userName && 
                                                  x.Year == numberYear && 
                                                  x.Month < numberMonth)
                                      .Select(b => string.IsNullOrEmpty(b.overtimeList) ? TimeSpan.Zero : TimeSpan.Parse(b.overtimeList))
                                      .ToList();

// Calculate sum
var sumOvertimeListVariable = overtimeListVariable.Aggregate(TimeSpan.Zero, (t1, t2) => t1 + t2);

SQL Сервер:

Id | Login | Year | Month | Day | Overtime |selectboxlist| Minus |
---+-------+------+-------+-----+----------+-------------+-------+
 1 | MIPA  | 2020 |   1   |  1  |   3:00   |      2      | 1:00  |
33 | MIPA  | 2020 |   1   | 30  |   1:00   |     null    | 1:30  |
44 | MIPA  | 2020 |   2   |  1  |   4:00   |      2      | 2:00  |
77 | MIPA  | 2020 |   2   | 30  |   2:00   |     null    | 2:30  |

Вид:

@Html.DropDownListFor(m => m.Model1[nr_rows].DropdownClassList, new SelectList(Enum.GetValues(typeof(enumDropDown))), "  ", new { @class = "selectboxlist" })

@Html.TextBoxFor(m => m.Model1[nr_rows].overtimeList , new { @class = "overtime", @type = "time"})

@Html.TextBoxFor(m => m.Model1[nr_rows].minusList, new { @class = "minus", @type = "time"})

Модель:

public partial class modelCard
{
    public string overtimeList { get; set; }
    public string minusList { get; set; }
    public enumDropDown? DropdownClassList{ get; set; }
}

public enum enumDropDown
{
    test1 = 1,
    test2 = 2,
    test3 =3
}

1 Ответ

1 голос
/ 24 февраля 2020

Теперь, когда вы успешно получили OvertimeList и его сумму, вы можете использовать тот же метод для получения соответствующих данных столбца Минус Min просто добавьте условие where, как показано ниже:

var minusListVariable= _context.Card
            .Where(x => x.Login == userName && x.Year == numberYear &&
                   x.Month < numberMonth && x.selectboxlist=="2")
            .Select(b => string.IsNullOrEmpty(b.Minus) ? TimeSpan.Zero : TimeSpan.Parse(b.Minus))
            .ToList();

var sumMinusListVariable = minusListVariable.Aggregate(TimeSpan.Zero, (t1, t2) => t1 + t2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...