简体   繁体   中英

What is C# equivalent of TSQL's “IN” operator? What are the ways to check if X exists in X,Y,Z in c#?

What are the ways to check if X exists in X,Y,Z in c#? For eg:

X=5;

I want to check if X's value matches any of the comma separated values..

if(x in (2,5,12,14)
new int[] { 2,5,12,14}.Contains(x);
List<int> list = new List<int> { 1, 2, 3, 4, 5 };
list.Contains(5);

Linq.Contains() what you searching for

// Create List with three elements.
var list = new List<string>();
list.Add("cat");
list.Add("dog");
list.Add("moth");

// Search for this element.
if (list.Contains("dog"))
{
    Console.WriteLine("dog was found");
}

There are two methods Linq.Contains() method and an extension Linq.Contains<int>

        var list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        // Use extension method.

        var stp = new Stopwatch();
        stp.Start();
        bool a = list.Contains<int>(7);
        stp.Stop();
        Console.WriteLine("Time in extenstion method {0}", stp.Elapsed);

        stp.Restart();
        // Use instance method.
        bool b = list.Contains(7);
        stp.Stop();
        Console.WriteLine("Time in normal method {0}", stp.Elapsed);

Performance benchmark : The version specific to List ie, list.Contains(7); , found on the List type definition, is faster. I tested the same List with the two Contains methods.

You may use .Contains method. eg listItems.Contains(x)

There is no in operator in C#, but you can implement an extension method to make the code more readable.

public static class Ext
{
    public static bool In<T>(this T val, params T[] values) where T : struct
    {
        return values.Contains(val);
    }
}

//usage: var exists = num.In(numbers);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM