#c# #collections #minimum
#c# #Коллекции #минимальный
Вопрос:
У меня есть панель классов:
public class Bar
{
public string Symbol { get; set; }
public DateTime DateTime { get; set; }
public double Open { get; set; }
public double High { get; set; }
public double Low { get; set; }
public double Close { get; set; }
public int Volume { get; set; }
}
и коллекция
minDataCollection<Bar>
Я пытаюсь найти индекс строки с наименьшим значением.Низкий в пределах «ширины» столбцов, начинающихся на n баров назад от текущего столбца.
Проблема в том, что если я создам другую коллекцию размера «ширина» и найду минимум, я потеряю связь с индексами основной коллекции.
Комментарии:
1. Является ли ‘minDataCollection’ классом, который вы написали?
2. minDataCollection<Bar> — это наблюдаемая коллекция
3. Что плохого в добавлении индекса начального элемента к индексу найденного элемента подсписка?
4. Если я найду минимальное значение с помощью List.Min(); Я узнаю только минимальное значение. Теперь, как я могу получить индекс? Я не нашел ни одного простого метода.
Ответ №1:
Вы можете использовать LINQ Select
-с-индексом, а затем MinBy
из MoreLINQ:
var index = collection.Select((value, index) => new { value, index })
.MinBy(pair => pair.value.Low).index;
Комментарии:
1. Я новичок в программировании (хотя я изучил 4 толстые книги), поэтому я могу ошибаться. Мне кажется, что этот код будет просматривать всю minDataCollection<Bar> для индекса значения с наименьшим «Низким» свойством. Мне нужно проанализировать только несколько баров, которые находятся на расстоянии n баров (к началу коллекции) от текущего бара. Я знаю индекс текущего бара — iCurrBar.
2. @Vitaly: Ах, извините — это было не совсем очевидно. Отредактирую позже — сейчас у меня нет времени.