Here's my code
ResultsetFields fields = new ResultsetFields(3);
fields.DefineField(ArticleFieldIndex.CategorieId, 0, "CategorieId", "Article");
fields.DefineField(ArticleFieldIndex.Creation, 1, "ArticleCreation", "Article", AggregateFunction.Max);
fields.DefineField(ArticleFieldIndex.Id, 2, "ArticleId", "Article", AggregateFunction.Max);
ISortExpression sorter = new SortExpression(SortClauseFactory.Create(ArticleFieldIndex.Creation, SortOperator.Descending, "Article"));
IGroupByCollection groupByClause = new GroupByCollection();
groupByClause.Add(fields[0]);
DataTable dtArticles = new DataTable();
TypedListDAO dao = new TypedListDAO();
dao.GetMultiAsDataTable(fields, dtArticles, 5, null, null, null, false, groupByClause, null, 0, 0);
and here's the generated SQL
SELECT FIRST 5 DISTINCT Article.PILTGCATEGORIEID AS CategorieId,MAX(Article.ARTCLCREATION) AS ArticleCreation,MAX(Article.ARTCLID) AS ArticleId FROM ARTICLE AS Article GROUP BY Article.PILTGCATEGORIEID