You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# LINQ查询中整合条件判断实现一行代码逻辑?

如何将条件判断整合到LINQ查询中实现逻辑?

你期望的那种在链式调用中间插入if块的写法在C#里是语法不合法的,编译会报错。不过有两种更规范的方式实现你的需求:

方式一:在Where子句中合并条件(一行代码实现)

直接把userId的判断整合到Where的条件里,当userId为0时不做过滤,不为0时才执行用户关联检查:

var sites = context.SITES.OrderBy(s => s.NAME)
                         .Where(s => userId == 0 || s.Users.Any(x => x.ID == userId))
                         .ToList();

方式二:分步构建查询(更高效推荐)

先初始化基础的排序查询,再根据条件动态添加Where过滤,最后统一执行ToList(),这种方式避免了重复执行OrderBy操作,性能更优:

var query = context.SITES.OrderBy(s => s.NAME);
if (userId != 0)
{
    query = query.Where(s => s.Users.Any(x => x.ID == userId));
}
var sites = query.ToList();

这两种方式都能替代你原来的重复查询逻辑,实现根据userId是否为0来决定是否过滤站点的需求。

内容的提问来源于stack exchange,提问作者Stefano Cesano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:30:50