Мне нужно сгруппировать и суммировать данные плоских массивов. Данные не могут быть сгруппированы вне приложения и должны возвращать массив
У меня есть плоские данные в моем приложении, которые мне нужно будет сгруппировать, суммировать и считать, как обычно, с SQL-запросом. Для этого проекта, однако, это должно быть сделано в приложении Flex. Мне нужно выяснить, как сгруппировать мои данные по дням или месяцам, используя поле datatime в моей коллекции Arraycollection, а затем соответствующим образом подсчитать или суммировать данные в других полях. Ранее я использовал Groupingcollections, но только при привязке к иерархическим элементам управления (например, AdvancedDataGrid и Tree), но мне нужна результирующая ArrayCollection с сгруппированными и обобщенными данными.
По сути, я пытаюсь получить доступ к своему AC как таблица sql (GROUP BY MONTH(datetime), COUNT, COUNT(DISTINCT() и т. Д.), И я не знаю, как это сделать. У кого-нибудь есть опыт в этом?
2 ответа
Вы можете попробовать ActionLinq ( https://bitbucket.org/briangenisio/actionlinq/wiki/Home). Я сам этим не пользовался, но мне не терпелось попробовать:)
Это реализация Linq (из C#) в ActionScript. Это дает вам функциональный способ работы с коллекциями данных очень похожим на SQL способом (выбор, группировка, фильтрация и т. Д.).
Я бы охарактеризовал это как filter
метод на стероидах.
Вот пример с сайта - он показывает некоторые из SQL-подобных имен и как работает цепочка:
var transformed:Array =
[-4, -3, -2, -1, 0, 1, 2, 3, 4]
.where(isEven)
.select(square)
.distinct()
.reverse()
.toArray();
assertThat(transformed, array(0, 4, 16));
Больше информации и примеров здесь: http://riarockstars.com/2011/02/07/processing-data-on-the-clientactionlinq/
Вы можете обнаружить, что этот пример указывает вам правильное направление http://flexdiary.blogspot.com/2008/09/groupingcollection-example-featuring.html