Почему бы не использовать универсальную коллекцию вместо ArrayList?
объявление
List<SPListItem> arlist = new List<SPListItem>();
сделать это
foreach (SPListItem Item in gItems) {
arlist.Add(Item);
}
вместо arlist.Add(gItems);
Наконец, когда вы закончите цикл по всем дочерним сайтам идобавив все события, сортируйте так
arlist.OrderBy((x) => x.Item("EventDate"));
Не забудьте добавить пространство имен system.collections.generic.