Mam List<string>
, a niektóre z tych ciągów są liczbami. Chcę wyodrębnić ten podzestaw do List<int>
.Używanie LINQ do wyodrębniania ints z listy ciągów znaków
Zrobiłem to w dość gadatliwy sposób - jak poniżej - ale mam wrażenie, że musi istnieć lepszy sposób LINQ, aby to ukształtować. Jakieś pomysły?
List<string> myStrs = someListFromSomewhere;
List<int> myInts = new List<int>();
foreach (string myStr in myStrs)
{
int outInt;
if (int.TryParse(myStr, out outInt))
{
myInts.Add(outInt);
}
}
Oczywiście nie trzeba rozwiązanie to - to głównie dla mojego wykształcenia LINQ.
Kolejna okazja dla mnie do państwa "Życzę TryParse wróci int? (Wiem, dziedzictwo ...) –
z pewnością nie bardziej wydajne, ale można zrobić "var myInts = myStrs.Where (s => int.TryParse (s, out out)). Wybierz (s => int.Parse (s)) ', o ile już zdążyłeś zdefiniować. Nazywa to 'TryParse' * i * Parse na każdym łańcuchu, więc tak naprawdę nie sugerowałbym tego. – rejj
To pytanie może być interesujące: [zapytanie LINQ do wykonania projekcji, pomijając przypadki, w których projekcja spowodowałaby wyjątek] (http://stackoverflow.com/questions/7188623/linq-query-to-perform-a-projection-skipping-cases-where-the-projection-would-ca) Używam twojego dokładnego przypadku jako przykładu. –