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

ASP.NET C# MVC中如何用LINQ实现Where In查询?

实现LINQ的Where In查询当然可行!

你已经掌握了单值的Where查询,要实现类似SQL里IN的逻辑其实很简单,只需要把原来的等于判断换成Contains方法就行——你的思路方向是对的,只是写法需要调整。

错误写法的问题

你原来写的m.value == values是把单个数值和整个数组做比较,这在语法上就不成立,编译器也会报错,因为类型不匹配(单个int vs int[])。

正确的实现方式

直接使用数组的Contains方法,LINQ to Entities会自动把这个逻辑转换成SQL的IN子句,完美匹配你的需求:

public ActionResult Index()
{
    // 定义要匹配的数值数组
    int[] values = {1, 2, 3, ...};
    
    using (DBEntities db = new DBEntities())
    {
        // 使用Contains实现Where In逻辑
        var filteredData = db.vw_values.Where(m => values.Contains(m.value)).ToList();
        return View(filteredData);
    }
}

这段代码最终生成的SQL会是类似这样的:

SELECT * FROM vw_values WHERE value IN (1, 2, 3, ...)

额外的小提示

如果你的values数组有可能是空的,要注意:空数组的Contains会永远返回false,导致查询结果为空。如果需要这种情况返回所有数据,可以加个简单的判断:

public ActionResult Index()
{
    int[] values = {1, 2, 3, ...};
    
    using (DBEntities db = new DBEntities())
    {
        var query = db.vw_values.AsQueryable();
        
        // 只有当数组非空时才添加Where条件
        if (values.Length > 0)
        {
            query = query.Where(m => values.Contains(m.value));
        }
        
        var result = query.ToList();
        return View(result);
    }
}

这样就能灵活处理空数组的场景啦。

内容的提问来源于stack exchange,提问作者Jorge López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:35:12