我有一个员工评估表的列表,这个表有字段,这个字段中的值在1到10之间。另一个表“结果细分”具有以下列:TotalResult
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 表中根据 Id 列表的记录
查询是表的可查询对象EmployeeAppraisal
仅当用户从列表中选择一个值时,此代码才有效,如果他/她选择多个值,则查询将不返回任何内容。
因为它的行为像“和”,它应该像“OR”一样,但我不知道如何写。
慕尼黑5688855
相关分类