如何重构此 EF Core 查询以添加另一个 where 条件变量?

How can I refactor this EF Core query to add another where condition variable?

我在下面有这个查询,它在 SenderId 或 ReceiverId 列中查找具有用户 ID 的传输。

// transferParams.Transfer = null,1,2 
var transfersCount = await _dbContext.Transfers
   .Where(p => 
     (p.SenderId == userFromRepo.Id || p.ReceiverId == userFromRepo.Id) &&
     (!transferParams.Status.HasValue || p.TransferStatus == (TransferStatus)transferParams.Status) &&
     (!transferParams.Type.HasValue || p.TransferType == (TransferType)transferParams.Type))
.CountAsync();

我现在已经在名为 'Transfer' 的控制器中传递了另一个参数,它是一个可为 null 的 Int,其中接收 1,发送 2。

我需要重构查询,这样如果传入的传输参数为空,我仍会查看两列(ReceiverId、SenderId),但如果它为 1,那么我将只查看 ReceiverId 列和如果 2 只查看 SenderId 列。

谁能告诉我怎么做?

var baseQuery = _dbContext.Transfers.AsQueryable();
switch(transfer)
{
  case 1:
    baseQuery = baseQuery.Where(p => p.ReceiverId == user.Id);
    break;
  case 2:
    baseQuery = baseQuery.Where(p => p.SenderId == user.Id);
    break;
  default:
    baseQuery = baseQuery.Where(p => p.ReceiverId == user.Id || p.SenderId == user.Id);
    break;
}
if (transferParams.Status.HasValue)
  baseQuery = baseQuery.Where(p=> p.TransferStatus == (TransferStatus)transferParams.Status);
if (transferParams.Type.HasValue)
  baseQuery = baseQuery.Where(p => p.TransferType == (TransferType)transferParams.Type);
var transferCount = await baseQuery.CountAsync();