c# - 使用条件无法正常获取结果(C#)
问题描述
我试图从数据库中获取数据并将其分配给列表
这里有2个条件。1 - 我只有 categoryId 和 2 - 我有 category 和 subcategoryId
我写了这样的代码
public async Task<List<TimelineItemDto>> GetFilteredClasses(int? categoryId, int? subcategoryId)
{
List<TimelineItemDto> filteredClasses;
if (categoryId != null)
{
filteredClasses = await _context.Events
.Where(x => x.CategoryId == categoryId && x.EventType == EntityType.Class)
.ProjectTo<TimelineItemDto>()
.ToListAsync();
}
if (categoryId != null && subcategoryId != null)
{
filteredClasses = await _context.Events
.Where(x => x.CategoryId == categoryId && x.SubcategoryId == subcategoryId &&
x.EventType == EntityType.Class)
.ProjectTo<TimelineItemDto>()
.ToListAsync();
}
else
{
filteredClasses = await _context.Events.Where(x =>
x.EventType == EntityType.Class).ProjectTo<TimelineItemDto>()
.ToListAsync();
}
return filteredClasses;
}
一秒钟if
,else
完全没问题,它被执行并填充列表
我该如何解决这个问题?
解决方案
您应该如下更新条件流:
if (categoryId != null && subcategoryId != null)
{
...
}
else if (categoryId != null)
{
...
}
else
{
...
}
有了上面,filteredClasses
不会被最后一个 else 条件覆盖。您当前的代码首先评估if
然后if
& else
。两者都是不同的代码块,最后else
总是被执行。
推荐阅读
- c++ - 使用 std:ofstream 时检查内容副本到文件中
- android - 异步 React Native 的按钮无响应问题
- javascript - 当我将它从快递传递到反应时,重定向 302 不起作用
- c++ - 新建一个对象需要很多时间
- gatsby - graphql,如何按第一个节点名称过滤?
- sql - 使用 gorm golang 在多个表中进行动态列搜索
- bigdata - 数据类型转换和重新采样
- powershell - 使用 Powershell 和 Regex 仅匹配第一个
- scheduler - Apache 气流:将追赶设置为 False 不起作用
- python - 按元素加入列表列表