Код: Выделить всё
public static class IEnumerableExtensions
{
public static double StdDev(this IEnumerable list, Func values)
{
// ref: https://stackoverflow.com/questions/2253874/linq-equivalent-for-standard-deviation
var mean = 0.0;
var sum = 0.0;
var stdDev = 0.0;
var n = 0;
foreach (var value in list.Select(values))
{
if (value is null)
continue;
n++;
var delta = value.Value - mean;
mean += delta / n;
sum += delta * (value.Value - mean);
}
if (1 < n)
stdDev = Math.Sqrt(sum / (n - 1));
return stdDev;
}
}
Код: Выделить всё
public static class IEnumerableExtensions2
{
extension(IEnumerable list) // Bang! (1)
{
public double StdDev(Func values)
{
// ref: https://stackoverflow.com/questions/2253874/linq-equivalent-for-standard-deviation
var mean = 0.0;
var sum = 0.0;
var stdDev = 0.0;
var n = 0;
foreach (var value in list.Select(values)) // Bang! (2)
{
if (value is null)
continue;
n++;
var delta = value.Value - mean;
mean += delta / n;
sum += delta * (value.Value - mean);
}
if (1 < n)
stdDev = Math.Sqrt(sum / (n - 1));
return stdDev;
}
}
}
- Не удалось найти тип или имя пространства имен «T» (вам не хватает директивы using или ссылки на сборку?)
- 'IEnumerable' не содержит определения для 'Select' и лучшей перегрузки метода расширения 'ImmutableArrayExtensions.Select(ImmutableArray, Func)" требуется получатель типа "System.Collections.Immutable.ImmutableArray"
Подробнее здесь: https://stackoverflow.com/questions/798 ... -a-generic