Here is the code I came up with for future reference
IPredicateExpression filter = new PredicateExpression();
filter.Add(EmployeeCheckFields.EmployeeMasterId == EmployeeID)
var fields = new ResultsetFields(1);
fields.DefineField(EmployeeCheckFields.CheckDate, 0, "Year");
fields[0].ExpressionToApply = new DbFunctionCall("CAST({0} as bigint)",
new object[]
{
new DbFunctionCall("YEAR",
new object[]
{
EmployeeCheckFields.
CheckDate
})
});
ISortExpression sorter = new SortExpression();
sorter.Add(new SortClause(fields[0], SortOperator.Descending));
var dynamicList = new DataTable();
var dao = new TypedListDAO();
dao.GetMultiAsDataTable(fields, dynamicList, 0, sorter, filter, null, false, null, null, 0, 0);
Thanks for pointing me in the right direction