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

LINQ查询中使用Where子句匹配列表值时出错求助

解决方法

问题出在你搞反了Contains的调用对象:你当前调用的是字符串类型的OrderStatus的Contains方法(该方法仅接收char或string参数),而不是判断状态列表是否包含当前实体的状态值。

正确的查询写法

把Where子句改成检查状态列表是否包含订单的OrderStatus:

var query = context.PurchaseOrders
            .Include(x => x.Supplier)
            .AsQueryable();

// 关键修改:用状态列表判断是否包含当前订单状态
query = query.Where(x => orderStatusList.Contains(x.OrderStatus!));

这段代码会生成你期望的IN语句SQL,和你给出的原生SQL逻辑完全一致。

额外注意事项

  • 如果orderStatusList可能为空,建议添加判断逻辑,避免生成无意义的查询(比如返回空结果或全量数据,根据业务需求选择):
    if (orderStatusList.Any())
    {
        query = query.Where(x => orderStatusList.Contains(x.OrderStatus!));
    }
    // 若列表为空,可选择不添加Where条件返回所有数据,或手动返回空集合
    
  • 检查实体类的OrderStatus字段名与数据库列名是否一致(你提供的原生SQL里写的是OrderStaus,注意拼写是否存在笔误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:10:56