C# 检查数组中int的问题
我正在尝试检查数组中的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
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的答案正是你想要的。我添加了评论,这将使我更清楚地了解我在寻找什么。我添加了评论,这将使我更清楚地了解我在寻找什么