1

我想知道是否有一种方法可以将整数变量与 if 语句中的整数列表进行比较,就像我们可以在 SQL WHERE CLAUSE 中那样,

WHERE MY_ID IN (1,2,3,4,5,6)

如果它存在于c#中,我想使用相同的功能

if(myid in (1,2,3,4,5,6)){}

这似乎是一个愚蠢的问题,但如果存在它会为我节省很多时间

4

5 回答 5

8

if您可以直接在语句中使用数组聚合,如下所示:

if (new[] {1,2,3,4,5,6}.Contains(id)) {
}

注意:您需要添加using System.Linq才能编译。

于 2013-10-30T14:15:28.473 回答
3

试试这个:

var numbers = new List<int>() {1,2,3,4,5,6};

if (numbers.Contains(myId))
{
}
于 2013-10-30T14:14:11.730 回答
1
int[] intArray = { 1, 2, 3, 4, 5 };
if (intArray.Contains(3))
        // ...
于 2013-10-30T14:15:25.047 回答
0

或者List<T>.Contains,如果您想这样做以跟踪您已经输入的值,您可以使用HashSet<int>,因为Add如果添加了值,则方法返回 true:

var numbers = new HashSet<int>();

if (numbers.Add(myNumber))
{
    // myNumber has just been inserted into numbers
}

还具有额外的HashSet好处,即被设计为基于散列快速找到其中的特定值,并且int散列int本身就是散列。

它有Contains

if (numbers.Contains(myNumber))
{}

IEnumerable还有Contains其他任何东西的扩展方法:

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.contains(v=vs.110).aspx

于 2013-10-30T14:16:41.957 回答
0

使用ContainsExtension 方法,您可以轻松实现此目的:

var myNumberList = new List<int>(){1,2,3,4};

// check using the Contains extension method

if(myNumberList.contains(TARGET_NUMBER))
{
 // do your stuff here
}

来自官方 MSDN 文章:

使用默认相等比较器确定序列是否包含指定元素。

链接:http: //msdn.microsoft.com/en-us/library/bb352880.aspx

于 2013-10-30T14:17:29.980 回答