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

У меня есть плоские данные в моем приложении, которые мне нужно будет сгруппировать, суммировать и считать, как обычно с SQL-запросом. Для этого проекта, однако, это должно быть сделано в приложении Flex. Мне нужно выяснить, как сгруппировать мои данные по дням или месяцам, используя поле datatime в моей коллекции Arraycollection, а затем соответствующим образом подсчитать или суммировать данные в других полях. Ранее я использовал Groupingcollections, но только при привязке к иерархическим элементам управления (например, AdvancedDataGrid и Tree), но мне нужна результирующая ArrayCollection с сгруппированными и обобщенными данными.

По сути, я пытаюсь получить доступ к своему AC как таблица sql (GROUP BY MONTH (datetime), COUNT, COUNT (DISTINCT () и т. Д.), И я не знаю, как это сделать. У кого-нибудь есть опыт? делать это?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Вы можете попробовать ActionLinq (https://bitbucket.org/briangenisio/actionlinq/wiki/Home)). Я сам этим не пользовался, но мне не терпелось попробовать :))

Это реализация Linq (из C #) в actionscript. Это дает вам функциональный способ работы с коллекциями данных в стиле, очень похожем на SQL (select, group, filter и т.

Я бы охарактеризовал его как метод 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/

0 голосов
/ 23 сентября 2011

Вы можете обнаружить, что этот пример указывает вам правильное направление http://flexdiary.blogspot.com/2008/09/groupingcollection-example-featuring.html

...