c# - C# LINQ - 仅当它不为空时才包含 Where 条件
问题描述
我有多个输入参数,我想在 where 子句中检查,但我只想检查参数是否为空。如果它不为空,那么我不希望该参数出现在 where 子句中。
当前工作是这样的:
if(userId != null){
list.Where(x=> x.Id == id && x.UserId == userId);
}
else{
list.where(x=> x.Id == id)
}
如果我们有多个可以为 null 或不为 null 的参数,这是不可行的,因为它会创建嵌套的 if 条件。这里最好的解决方案是什么?
解决方案
在这种情况下,我建议使用IEnumerable
, 并结合查询:
var query = list.Where(x=> x.Id == id);
if (userId != null)
{
query = query.Where(x => x.UserId == userId);
}
var result = query.ToList();
同样的方法适用于IQueryable
推荐阅读
- command-line - 使用命令行从谷歌驱动器下载共享文件的最快方法是什么?
- android - 如何使用 C++ 在 Android 中获取 Version.Code?
- google-apps-script - 复制数据范围并粘贴到新页面,然后重复
- javascript - 在 React 中具有默认函数类型的 Typescript 对象
- websocket - Websocket 适配器中的 NestJS 依赖注入
- j - 具有重复索引的数组的总和
- python - 根据 pandas pivot_table 索引查找前 3 名公司
- python - xarray 数据集/dataarray 上的坐标映射
- laravel - 遍历 Laravel 8 中的帖子
- html - HTML使左右div具有左一个位置:固定