I believe this will work for you. You just need to add a lambda function.
var result = filteredTags
.OrderBy(t => getColumnName(t, iSortCol_1))
.ThenBy(t => getColumnName(t, iSortCol_2));
But your getColumnName needs to have two input parameters (the table and the columnNum).
Update:
To include the sort column count and the descending:
var r = firstDesc ?
filteredTags
.OrderByDescending(t => getColumnName(iSortCol_1))
: filteredTags
.OrderBy(t => getColumnName(iSortCol_1))
for ( var i =1; i < colCount; i++)
{
r = nDesc ?
r.ThenByDescending(t => getColumnName(iSortCol_1))
: r.OrderBy(t => getColumnName(iSortCol_1))
}