Мне нужно сгруппировать и суммировать данные плоских массивов. Данные не могут быть сгруппированы вне приложения и должны возвращать массив

У меня есть плоские данные в моем приложении, которые мне нужно будет сгруппировать, суммировать и считать, как обычно, с 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

Другие вопросы по тегам