Hen*_*ing 2 .net c# linq .net-core
这是我使用 LINQ 的第一步。我有两个过滤器列表作为参数,也可以为空。如果我以这种方式执行代码,我不会从空列表中返回任何值。
如果要忽略空列表,代码必须是什么样子?
public List<PersonDTO> GetPersons(int pageNumber, int pageSize, List<string> departments, List<string> locations, string filterText)
{
if (filterText == null)
{
filterText = "";
}
List<Person> personsList = _dbContext.Persons
.Where(a => (a.firstName.ToLower().Contains(filterText.ToLower()) || a.lastName.ToLower().Contains(filterText.ToLower()))
&& departments.Contains(a.department)
&& locations.Contains(a.location))
.Skip(pageNumber * pageSize).Take(pageSize).ToList();
return _mapper.Map<List<PersonDTO>>(personsList);
}
Run Code Online (Sandbox Code Playgroud)
处理它们为空的情况不是在查询中而是使用if:
IEnumerable<Person> persons = _dbContext.Persons;
if(!string.IsNullOrEmpty(filterText))
{
string lowerFilterText = filterText.ToLower();
persons = persons
.Where(p => p.firstName.ToLower().Contains(lowerFilterText) || a.lastName.ToLower().Contains(lowerFilterText));
}
if(departments.Any())
{
persons = persons.Where(p => departments.Contains(p.department));
}
if(locations.Any())
{
persons = persons.Where(p => locations.Contains(p.location));
}
List<Person> personList = persons.Skip(pageNumber * pageSize).Take(pageSize).ToList();
Run Code Online (Sandbox Code Playgroud)
由于 LINQ 的延迟执行,这只会在最终的ToList.
| 归档时间: |
|
| 查看次数: |
2957 次 |
| 最近记录: |