C# 检查数组中int的问题

C# 检查数组中int的问题,c#,arrays,linq-to-sql,c#-3.0,C#,Arrays,Linq To Sql,C# 3.0,我正在尝试检查数组中的int值,并在此基础上进行一些计算,但代码不起作用,下面是代码: string EventIds = getVoucher.EventIDs; int[] array = EventIds.Split(',') .Select(x => int.Parse(x, CultureInfo.InvariantCulture)) .ToArray(); if(array.ToStri

我正在尝试检查数组中的int值,并在此基础上进行一些计算,但代码不起作用,下面是代码:

string EventIds = getVoucher.EventIDs;

int[] array = EventIds.Split(',')
                      .Select(x => int.Parse(x, CultureInfo.InvariantCulture))
                      .ToArray();

if(array.ToString().Any(s => booking.EventID.ToString().Contains(s)))
{do something; } else { do something;}

为什么要尝试转换为字符串数组

array.ToString();//???
此代码将返回 System.Int32[]

卸下ToString()!!! 如果要枚举数组,请使用此代码

array.AsEnumerable().Any(...

为什么要尝试转换为字符串数组

array.ToString();//???
此代码将返回 System.Int32[]

卸下ToString()!!! 如果要枚举数组,请使用此代码

array.AsEnumerable().Any(...

此外,取决于如何生成源数组,您应该考虑Srig.Trimes()来删除空格:

if(EventIds.Split(',').Any(s => bookingId.Contains(s.Trim())))

此外,取决于如何生成源数组,您应该考虑Srig.Trimes()来删除空格:

if(EventIds.Split(',').Any(s => bookingId.Contains(s.Trim())))

array.ToString
返回字符串
“System.Int32[]”
。对字符串使用
Any
,检查字符串中每个字符的谓词

假设
booking.EventID
int
,例如
1234
booking.EventID.ToString()
返回字符串
“1234”

因此,您的代码检查
“1234”
是否包含
“System.Int32[]”
中的任何字符(此处:
true
,因为
“1234”
包含
“System.Int32[]”
'3'


你没有说想要的结果是什么,但我猜你在寻找这样的东西:

if (array.Any(s => booking.EventID == s))
{
    // ...
}


array.ToString
返回字符串
“System.Int32[]”
。对字符串使用
Any
,检查字符串中每个字符的谓词

假设
booking.EventID
int
,例如
1234
booking.EventID.ToString()
返回字符串
“1234”

因此,您的代码检查
“1234”
是否包含
“System.Int32[]”
中的任何字符(此处:
true
,因为
“1234”
包含
“System.Int32[]”
'3'


你没有说想要的结果是什么,但我猜你在寻找这样的东西:

if (array.Any(s => booking.EventID == s))
{
    // ...
}

不要做“ToArray()”,试着做“ToList()”。您可以使用“Contains”方法进行搜索。

尝试执行“ToList()”而不是执行“ToArray()”。您可以使用“Contains”方法进行搜索。

试试这个

if (
        EventIds.Split(',').OfType<string>()
            .Any(e => booking.EventID.ToString().Contains(e))
    )
{
    //Some member of a comma delimited list is part of a booking eventID ???
}
else
{
    //Or Not
}
if(
类型()的EventIds.Split(',')
.Any(e=>booking.EventID.ToString().Contains(e))
)
{
//逗号分隔列表中的某个成员是预订事件ID的一部分???
}
其他的
{
//还是不
}
如果这不是您想要做的,那么您的代码是错误的

编辑:

在读了你的评论后,我认为你想要更符合逻辑的

If (EventIDs.Split(',').Select(s => 
    int.Parse(s)).OfType<int>().Contains(booking.EventID))
{
    //Ther booking ID is in the list
}
else
{
    //It isn't
}
If(EventIDs.Split(',')。选择(s=>
type()的int.Parse()包含(booking.EventID))
{
//预订ID在列表中
}
其他的
{
//不是
}
试试这个

if (
        EventIds.Split(',').OfType<string>()
            .Any(e => booking.EventID.ToString().Contains(e))
    )
{
    //Some member of a comma delimited list is part of a booking eventID ???
}
else
{
    //Or Not
}
if(
类型()的EventIds.Split(',')
.Any(e=>booking.EventID.ToString().Contains(e))
)
{
//逗号分隔列表中的某个成员是预订事件ID的一部分???
}
其他的
{
//还是不
}
如果这不是您想要做的,那么您的代码是错误的

编辑:

在读了你的评论后,我认为你想要更符合逻辑的

If (EventIDs.Split(',').Select(s => 
    int.Parse(s)).OfType<int>().Contains(booking.EventID))
{
    //Ther booking ID is in the list
}
else
{
    //It isn't
}
If(EventIDs.Split(',')。选择(s=>
type()的int.Parse()包含(booking.EventID))
{
//预订ID在列表中
}
其他的
{
//不是
}

如果我不将数组转换为字符串,那么我就不能使用LInq表达式“Any”nd“Contains”,您必须告诉我们您希望它做什么而不是什么,以及它正在做什么而不希望它做什么……。)数组[]包含实例23、24、25的值。。我想检查传递的EventId值是一个整数(1,2,3..),如果数组包含事件ID,那么它应该进行一些计算,否则会抛出错误,希望它有意义这更有意义。我认为@dtb的答案正是您想要的。如果我不将数组转换为字符串,那么我就不能使用LInq表达式“Any'nd'Contains”,您必须告诉我们您希望它做什么而不是什么,以及它正在做什么而不希望它做……。:)数组[]包含实例23、24、25的值。。我想检查传递的EventId值是一个整数(1,2,3..),如果数组包含事件ID,那么它应该进行一些计算,否则会抛出错误,希望它有意义这更有意义。我想@dtb的答案正是你想要的。我添加了评论,这将使我更清楚地了解我在寻找什么。我添加了评论,这将使我更清楚地了解我在寻找什么