Этот подход очень лаконичен и будет выдавать (не очень информативно) FormatException
, если разделенная строка содержит какие-либо значения, которые нельзя проанализировать как int:
int[] ints = str.Split(',').Select(s => int.Parse(s)).ToArray();
Если вы просто хотите отбросить любые значения не-int, попробуйте следующее:
private static int? AsNullableInt(string s)
{
int? asNullableInt = null;
int asInt;
if (int.TryParse(s, out asInt))
{
asNullableInt = asInt;
}
return asNullableInt;
}
// Example usage...
int[] ints = str.Split(',')
.Select(s => AsNullableInt(s))
.Where(s => s.HasValue)
.Select(s => s.Value)
.ToArray();