You need to enable JavaScript to run this app. 如何将带多个Where条件的SQL语句转换为可正常运行的Linq查询?
优惠活动
大模型
产品
解决方案
定价
更多

如何将带多个Where条件的SQL语句转换为可正常运行的Linq查询?

错误原因&修正方案

你代码里有三个核心问题:

  • C#中相等判断必须用==,你写的单等号=是赋值运算符,语法不合法,所以触发&&附近的报错
  • 提前调用ToList()会把整张Accesses表全量加载到内存再过滤,数据量大时性能极差,建议直接在EF的DbSet上执行查询,让过滤逻辑在数据库层面执行
  • 你要取的是AccessName字段,select后的属性名拼写错误,同时注意如果IsValid是数据库的bit类型,对应C#的bool,直接判断真值即可,不用转成等于1的判断

正确代码

查询语法写法

// IsValid为bool类型时用这个
var accessName = (from acc in _context.Accesses
                  where acc.IsValid && acc.AccessID == 1
                  select acc.AccessName).FirstOrDefault();

// IsValid为int类型时用这个
var accessName = (from acc in _context.Accesses
                  where acc.IsValid == 1 && acc.AccessID == 1
                  select acc.AccessName).FirstOrDefault();

方法语法写法(更常用)

var accessName = _context.Accesses
                  .Where(acc => acc.IsValid && acc.AccessID == 1)
                  .Select(acc => acc.AccessName)
                  .FirstOrDefault();

如果确定查询结果唯一,也可以把FirstOrDefault换成SingleOrDefault,查询不到结果时会返回对应类型的默认值(字符串类型为null)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:06:00