我正在执行一项任务,我在请求中发送状态作为参数,并希望根据该状态和数据库表中的另一列进行过滤,但该列不是从请求传递的。
所以就像
当状态不完整且数据库中的键值为空时,则获取满足此条件的记录(等待)
当状态不完整且数据库中的键值不为空时,则获取满足此条件的记录 (待审核)
当状态暂停时,获取满足此条件的记录 (拒绝)
当状态为成功时,则获取满足此条件的记录 (已批准)
当状态为“失败”时,则获取满足此条件的记录 (失败)
public class StatusRequest
{
public Status Status { get; set; }
}
public Task<StatusSearchResponse> Handle(StatusRequest request)
{
var projects = Repository.GetProjects(request.Status);
switch (request.Status)
{
case Status.Incomplete && projects .Any(x => x.Key == null):
projects.Where(x => x.Status == Status.Incomplete && x.Key == null);
break;
case Status.Suspended:
break;
case Status.Succeeded:
break;
case Status.Failed:
break;
default:
throw new ArgumentOutOfRangeException();
}
var response = new StatusSearchResponse();
response.Projects = projects;
return SystemTask.FromResult(response);
}
所以我的代码如下 或者没有 switch 语句我可以使用存储过程来这样做,有人可以建议吗
projects.Where(...)
不会对“项目”“做”任何事情,但它返回一个新列表(可枚举)。
所以将该行更改为
projects = projects.Where(x => x.Status == Status.Incomplete && x.Key == null).ToList();
.Where()
返回到列表(我假设“项目”是)