Thanks for all your help and here is what I applied
DataTable dtResults = new DataTable();
IPredicateExpression filter = new PredicateExpression();
ResultsetFields fields = new ResultsetFields(3);
fields.DefineField(OrderChildrenFields.OrderChildrenId, 0);
fields.DefineField(OrderChildrenFields.OrderId, 1);
fields.DefineField(OrderChildrenFields.FromDay, 2, "ProperFromDay");
fields[2].ExpressionToApply = new DbFunctionCall("CONVERT(DATETIME, SUBSTRING({0}, 4, LEN({0})))", new object[] {OrderChildrenFields.FromDay});
ISortExpression sorter = new SortExpression();
sorter.Add(new SortClause(OrderChildrenFields.FromDay.SetFieldAlias("ProperFromDay"), SortOperator.Ascending));
filter.Add(OrderChildrenFields.OrderId == orderID);
TypedListDAO dao = new TypedListDAO();
dao.GetMultiAsDataTable(fields, dtResults, 0, sorter, filter, null, true, null, null, 0, 0);
BUT
... the resultant query still doesn't use the alias field...i.e. (the rest is perfect)
...
ORDER BY
[myDB].[dbo].[OrderChildren].[FromDay] ASC',N'@OrderId1 int',@OrderId1=7070
How can I modify the above code to make query as:
...
ORDER BY
ProperFromDay ASC',N'@OrderId1 int',@OrderId1=7070
Thanking you again