c# - 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();
}
解决方案
下面的代码应该与您的示例相同
_unitOfWork.IToolBeltRepository
.FindAllAsList(x => (flagId == 0 || x.FlagId == flagId)
&& (COntractorId == 0 || x.ContractorId == COntractorId)
&& (homeOwnerId == 0 || x.HomeOwnerId == homeOwnerId)).ToList()
推荐阅读
- bash - 使用 awk 如何在一个命令中提取匹配的字符串和其他数据
- c# - 我需要使用 UTF-8-BOM 编码创建一个 csv 文件,我使用的是 .NET (C#)
- python - 正则表达式定位数字后跟空格后跟字符
- nlp - 删除 BERT 多语言中的停用词后,为什么 F1 分数会下降?
- blockchain - IPFS 和编辑权限
- vba - VBA 将多个内容控件添加到 Word 中的单个表格单元格
- angular - 基于外部条件的角度路由
- javascript - 如何为所有设备设置窗口滚动 Y 或 pageoffsetY ?
- node.js - 使用 node.js 在 IBM Cloud 中的 Web 操作中使用 axios
- excel - 当单元格包含特定数字时,我试图在 Excel 中隐藏工作表