Konwertuj ciąg [] na int [] w jednym wierszu kodu za pomocą LINQ

Mam tablicę liczb całkowitych w postaci ciągu:

var arr = new string[] { "1", "2", "3", "4" };

Potrzebuję tablicy „rzeczywistych” liczb całkowitych, aby popchnąć ją dalej:

void Foo(int[] arr) { .. }

Próbowałem rzucić int i oczywiście nie powiodło się:

Foo(arr.Cast<int>.ToArray());

Mogę zrobić następny:

var list = new List<int>(arr.Length);
arr.ForEach(i => list.Add(Int32.Parse(i))); // maybe Convert.ToInt32() is better?
Foo(list.ToArray());

lub

var list = new List<int>(arr.Length);
arr.ForEach(i =>
{
   int j;
   if (Int32.TryParse(i, out j)) // TryParse is faster, yeah
   {
      list.Add(j);
   }
 }
 Foo(list.ToArray());

ale oba wyglądają brzydko.

Czy są jakieś inne sposoby na wykonanie zadania?

questionAnswers(6)

yourAnswerToTheQuestion