У меня есть список таблицы оценки сотрудников, в этой таблице есть поле TotalResult
, значения в этом поле находятся в диапазоне от 1 до 10. Другая таблица Сегментация результатов имеет следующие столбцы:
Id int, Max double, Min double, Desc string
Давайтескажем, у меня есть эти данные для оценки сотрудника:
EmpId EmpName TotalResult
--- ------- -----------
1 Jaims 1.5
2 Johny 8.3
3 Moon 5.6
4 Michle 7
5 Mariam 9
6 Kamel 4
Значения сегментации результатов
Id Max Min Desc
--- --- --- -----
1 3 1 ~ 30%
2 4 3 40%
3 5 4 50%
4 6 5 60%
5 7 6 70%
6 10 7 ~ 80%
Теперь у пользователя есть список с множественным выбором таблицы сегментации тарифов

если пользователь выбирает 70% и 40%, запрос должен показывать следующие оценки сотрудников:
EmpId EmpName TotalResult
----- ------- -----------
3 Moon 5.6
6 Kamel 4
4 Michle 7
я написал этот код
if (rateSegIds != null)
{
var rateSegs = _repositoryRateSeg.Query(x => rateSegId.Contains(x.Id)).ToList();
if (rateSeg.Any())
{
foreach (var segmentation in rateSeg)
{
query = query.Where(x => x.TotalResult > segmentation.Min && x.TotalResult <= segmentation.Max);
}
}
}
rateSegIds
- это список целых чисел, содержащий выбор пользователя rateSegs
содержит записи из таблицы RateSegmataions согласно списку Ids - запрособъект запроса
EmployeeAppraisal
таблица
Этот код работает, только если пользователь выбирает одно значение из списка, если он / она выбирает несколько значений, запрос ничего не даст.
Поскольку он действует как «И», он должен действовать как «ИЛИ», но я не знал, как писать.