2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
|
||||||
1 | ||||||
Найти максимальную разницу времени между соседними объектами в первых 5-ти элементах коллекции15.09.2017, 10:37. Показов 1804. Ответов 7
Метки нет Все метки)
(
Добрый день!
С Linq работал не очень много, поэтому прошу помощи профессионалов. Создана коллекция sequences, каждый элемент которой содержит коллекцию объектов Observation. Объект Observation содержит элементы enum Element и DateTime Time. Задача найти максимальную разницу времени между соседними объектами Observation в первых 5-ти элементах коллекции sequences. Например в этом элементе коллекции sequences(выделил в коде красным) new Observation[] { new Observation(measureStartPoint, Element.Atlanta), new Observation(m1s, Element.Banana), new Observation(m3s, Element.Banana), new Observation(m4s, Element.Atlanta) } максимальная разница времени между соседними объектами будет 2 секунды. new Observation(measureStartPoint, Element.Atlanta) здесь значение времени 0 секунд new Observation(m1s, Element.Banana) здесь значение времени 1 секунд new Observation(m3s, Element.Banana) здесь значение времени 3 секунд new Observation(m4s, Element.Atlanta) здесь значение времени 4 секунд Ход моих мыслей. 1) сначала получаем первые 5 элементов var projection = sequences.Take(5); 2) Теперь отсюда нужно извлечь значения секунд и попарно сравнить для определения максимальной разницы времени Хотел сделать так, но не работает var data= projection.SelectMany(x=>x.Time.Second); Что подскажите?
0
|
|
15.09.2017, 10:37 | |
Ответы с готовыми решениями:
7
Найти максимальную разницу между соседними элементами
|
3449 / 2458 / 1168
Регистрация: 14.08.2016
Сообщений: 8,148
|
||||||
15.09.2017, 20:17 | 2 | |||||
я бы примерно так сделал, если, конечно, я правильно понял задачу
0
|
15.09.2017, 22:04 | 3 | |||||
degvelo, честно говоря, у меня такое ощущение, что либо я не чего-то не понял, либо в твоем объяснении есть нестыковки: с одно стороны ты говоришь, что надо найти разницу между именно соседними элементами, с другой - даешь пример
Здесь у последнего элемента 4 секунды разница с самым первым, а не с соседним, с которым у него разница только одна секунда. В принципе, если ты ошибся именно в примере и нужен таки максимум по соседним элементам, то можно как-то так
0
|
2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
|
||||||
15.09.2017, 22:58 [ТС] | 4 | |||||
Может не совсем правильно объяснил.
new Observation(measureStartPoint, Element.Atlanta) здесь значение времени 0 секунд new Observation(m1s, Element.Banana) здесь значение времени 1 секунд new Observation(m3s, Element.Banana) здесь значение времени 3 секунд new Observation(m4s, Element.Atlanta) здесь значение времени 4 секунд Здесь между первым и вторым элементом разница 1 секунда между вторым и третьим 2 секунды между третьим и четвертым 1 секунда. Соотвественно максимальная разница составляет 2 секунды. Я ее решил, но не совсем c помощью Linq, что не удовлетворило работодателя (((
0
|
2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
|
|
15.09.2017, 23:23 [ТС] | 6 |
Было 5 минут на решение.
Добавлено через 3 минуты Diamante, к сожалению не получается. Ошибка Run-time exception (line 122): Sequence contains no elements
0
|
15.09.2017, 23:28 | 7 | |||||
![]() Решение
Объясняю в третий раз: у тебя есть коллекции, в которых содержится менее двух элементов, в качестве примера смотри строки 49 и 51 своего кода из первого поста. Я не знаю как их надо интерпретировать и ты мне этого не объяснил, хотя до этого поста я дважды об этом написал. Нужно выбирать разницу дат, а когда дата одна или вообще нет, то какая будет разница? На этих объектах и происходит сбой. Ну если их надо интерпретировать как 0, то можно написать так
1
|
2 / 2 / 1
Регистрация: 06.09.2015
Сообщений: 81
|
|
15.09.2017, 23:51 [ТС] | 8 |
спасибо! работает
0
|
15.09.2017, 23:51 | |
Помогаю со студенческими работами здесь
8
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |