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

如何在C#中实现类似SQL Server里IN语句的简洁功能?

实现类似SQL IN的简洁C#调用方法

针对你遇到的类库方法调用路径冗余、想要贴近SQL IN语法的需求,有几个简洁的实现方式:

1. 使用using static指令简化调用

这是最直接的解决方案,无需修改原有IIN方法,只需在调用类的顶部添加静态导入:

using static MyProject.Common.Helpers.CoreHelper;

// 直接调用,无需完整类路径
bool bItemFound = IIN(x, 1, 2, 3, 5, 8, 13);

using static会导入指定类的所有静态成员,让你可以像调用本地静态方法一样使用IIN。

2. 扩展方法:让语法更贴近SQL IN

把原方法改造成扩展方法,可以实现x.IIN(...)的写法,完全复刻SQL中@x IN (...)的直观语法:
首先在类库中修改IIN方法(保留params参数):

public static class CoreHelper
{
    public static bool IIN(this object oValue, params object[] oValues)
    {
        foreach (var item in oValues)
        {
            if (oValue.ToString() == item.ToString())
                return true;
        }
        return false;
    }
}

然后在调用类中导入命名空间:

using MyProject.Common.Helpers;

// 调用语法完全贴近SQL IN
bool bItemFound = x.IIN(1, 2, 3, 5, 8, 13);

3. 泛型版本:更安全的类型匹配

原方法通过ToString()比较存在隐患(比如1和"1"会被误判为相等),可以用泛型实现类型安全的版本,同时结合扩展方法保持简洁:

public static class CoreHelper
{
    public static bool In<T>(this T value, params T[] values)
    {
        return values.Contains(value);
    }
}

调用时同样只需导入命名空间:

bool bItemFound = x.In(1, 2, 3, 5, 8, 13);

这个版本会严格匹配类型,避免不必要的类型转换错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:53:16