首页 > 解决方案 > C# Linq / 如何在单个查询中编写以下代码?

问题描述

如何在单个查询中编写以下代码?

if (flagId>0 && homeOwnerId==0 && COntractorId==0)
{
    var result = _unitOfWork.IToolBeltRepository.FindAllAsList(x => x.FlagId == flagId).ToList();
}

if (flagId == 0 && homeOwnerId >0 && COntractorId == 0)
{
  var result = _unitOfWork.IToolBeltRepository.FindAllAsList(x => x.HomeOwnerId == homeOwnerId).ToList();
}

if (flagId == 0 && homeOwnerId == 0 && COntractorId >0)
{
    var result = _unitOfWork.IToolBeltRepository.FindAllAsList(x => x.ContractorId == COntractorId).ToList();
}

if (flagId > 0 && homeOwnerId > 0 && COntractorId == 0)
{
    var result= _unitOfWork.IToolBeltRepository.FindAllAsList(x => x.FlagId == flagId && x.HomeOwnerId==homeOwnerId).ToList();
}

if (flagId > 0 && homeOwnerId == 0 && COntractorId> 0)
{
   var result = _unitOfWork.IToolBeltRepository.FindAllAsList(x => x.FlagId == flagId && x.ContractorId==COntractorId).ToList();
}

if (flagId == 0 && homeOwnerId > 0 && COntractorId > 0)
{
    var result = _unitOfWork.IToolBeltRepository.FindAllAsList(x => x.HomeOwnerId == homeOwnerId && x.ContractorId ==COntractorId).ToList();
}

标签: c#linqternary

解决方案


下面的代码应该与您的示例相同

_unitOfWork.IToolBeltRepository
  .FindAllAsList(x => (flagId  == 0 || x.FlagId == flagId) 
    && (COntractorId  == 0 || x.ContractorId == COntractorId) 
    && (homeOwnerId  == 0 || x.HomeOwnerId == homeOwnerId)).ToList()

推荐阅读