Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Агрегированные значения по полям обьектов в List


Автор: Stratus 26.1.2011, 11:14
Здравствуйте 

Каким образом можно подсчитать агрегированные значения по полям обьектов List?

Код примерно следующий:
Код


List<DataPoint> YDataPoints = new List<DataPoint>();

YDataPoints.Add(new DataPoint(Val));

//вот такого сделать не получается
//YDataPoints.GetRange(1, 10).Value.Max();
//Надо найти максимум в определенном диаппазоне обьектов по полю Val
//Как это сделать?
//Причем не хочется задействовать циклы... 

class DataPoint
    {
        private float _Val;

        public DataPoint(float Val)
        {
            _Val = Val;
        }
        
        public float Val { get { return _Val; } }
    }


Автор: KelTron 26.1.2011, 12:37
От 10 до 20 включительно:
Код

float max = YDataPoints.Skip(9).Take(11).Max(p => p.Val);

Автор: Stratus 27.1.2011, 00:12
Цитата(KelTron @ 26.1.2011,  12:37)
От 10 до 20 включительно:
Код

float max = YDataPoints.Skip(9).Take(11).Max(p => p.Val);

Ага помогло спасибо, но все таки лучше GetRange

Автор: Kaerus 27.1.2011, 02:23
Цитата(Stratus @  27.1.2011,  00:12 Найти цитируемый пост)
но все таки лучше GetRange

GetRange создаст в память обрезанную копию списка, а это лишнее выделение памяти. Linq наоборот отрабатывает данные поэлементно, не копируя данные целиком.
Хотя для маленьких массивов разница конечно будет незаметна.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)