类似于.NET框架中的sql IN语句?

Nic*_*ick 6 .net c# language-features

我有这个功能:

    public bool IsValidProduct(int productTypeId)
    {
        bool isValid = false;

        if (productTypeId == 10 ||
            productTypeId == 11 ||
            productTypeId == 12)
        {
            isValid = true;
        }

        return isValid;
    }
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更简单的方法来编写它,例如:

    public bool IsValidProduct(int productTypeId)
    {
        bool isValid = false;

        if (productTypeId.In(10,11,12))
        {
            isValid = true;
        }

        return isValid;
    }
Run Code Online (Sandbox Code Playgroud)

我知道我可以编写一个扩展方法来处理这个问题,我只是好奇是否已经存在某些东西或者是否有更好的方法来编写它.

Meh*_*ari 11

new [] {10, 11, 12}.Contains(productTypeId)
Run Code Online (Sandbox Code Playgroud)


Jar*_*Par 5

不,我不相信,但你可以写一个像这样的扩展方法,它允许你的代码完全按照书面的方式工作.

public static bool In<T>(this T source, params T[] args) {
    return args.Contains(source);
}
Run Code Online (Sandbox Code Playgroud)

虽然数组开销有点多.您可能希望为较小的固定数量的参数添加特殊情况.