Из вашего описания кажется, что вы используете словарь для представления видов «полей» / «свойств» и их значений, и что они связаны с каждым:
Словарь содержит ключ «date» со значением DateTime и различными другими ключами, которые соответствуют значениям десятичных чисел
blockquote>В этом случае вам лучше создать собственный класс с каждым из этих ключей в качестве отдельного свойства класса. Примерно так:
public class YourClass { public Date DateTime { get; set; } public int SomeProperty1 { get; set; } public int SomeProperty2 { get; set; } // .... }
Как только вы это сделаете, вместо
List
получите> List
. Теперь будет легко выполнить требуемый linq:Я хочу сгруппировать по дате и сделать среднее для каждого десятичного числа.
blockquote>var result = listOfCustomTypes.GroupBy(i => i.DateTime) .Select(g => new YourClass { Date = g.Key, SomeProperty1 = g.Average(i => i.SomeProperty1), SomeProperty2 = g.Average(i => i.SomeProperty2), });
И последнее, поскольку ваши данные изначально имеют формат JSON, вы можете:
- Как преобразовать объект JSON в объект Custom C #? [114 ]
- или, может быть, лучше использовать Linq для JSON для манипулирования данными: Запрос вложенных массивов JSON с помощью Linq, JSON.NET, C #
$.map
все о преобразовании объектов в наборе.
До DOM я часто использую его для быстрого щипания значений от моих элементов:
var usernames = $('#user-list li label').map(function() {
return this.innerHTML;
})
Вышеупомянутое преобразовывает <label>
элементы в списке пользователей только к тексту, содержавшему там. Затем я могу сделать:
alert('The following users are still logged in: ' + usernames.join(', '));
Отображение имеет две основных цели: захват свойств от массива объектов и преобразования каждого объекта во что-то еще.
Предположим, что у Вас есть массив объектов, представляющих пользователей:
var users = [
{ id: 1, name: "RedWolves" },
{ id: 2, name: "Ron DeVera" },
{ id: 3, name: "Jon Skeet" }
];
Отображение является удобным способом захватить определенное свойство от каждого объекта. Например, можно преобразовать его в массив идентификаторов пользователей:
var userIds = $.map(users, function(u) { return u.id; });
Как другой пример, скажите, что у Вас есть набор элементов:
var ths = $('table tr th');
Если Вы хотите сохранить контент тех заголовков таблицы для более позднего использования, можно получить массив их содержимых HTML:
var contents = $.map(ths, function(th) { return th.html(); });
Карта является старшей функцией, которая позволяет Вам применить определенную функцию к данной последовательности, генерируя новую получающуюся последовательность, содержащую значения каждого исходного элемента со значением прикладной функции.
Я часто использую его для получения допустимого селектора всех моих панелей UI jQuery, например:
var myPanels = $('a').map(function() {
return this.hash || null;
}).get().join(',');
Это возвратится, запятая разделила строку панелей, доступных на текущей странице как это:
"#home,#publish,#request,#contact"
И это - допустимый селектор, который может использоваться:
$(myPanels);// do something with all the panels
Вот одна вещь, для которой Вы могли использовать его.
$.map(["item1","item2","item3"], function(n){
var li = document.createElement ( 'li' );
li.innerHTML = n;
ul.appendChild ( li );
return li;
});
Преобразование кодовых обозначений для кодирования текста было бы возможным применением. Такой как тогда, когда у Вас есть список выборки и каждое индексируемое значение, имеет соответствующий текст кода.