strings.Where(s => { double ignored; return double.TryParse(s, out ignored); })
Это вернет все строки, которые могут быть проанализированы как double
s как строки.Если вы хотите, чтобы они были числами (что более логично), вы можете написать метод расширения:
public static IEnumerable<double> GetDoubles(this IEnumerable<string> strings)
{
foreach (var s in strings)
{
double result;
if (double.TryParse(s, out result))
yield return result;
}
}
Не забывайте, что double.TryParse()
использует вашу текущую культуру, поэтому она даст разные результаты на разныхкомпьютеры.Если вы не хотите этого, используйте double.TryParse(s, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out result)
.