public static string AddSortExpression(
string sortMetaData,
SortExpression sortExpression)
{
// De-serialize the SortExpressionCollection meta data
SortExpressionCollection collection =
GetSortExpressions(sortMetaData);
int index =
collection.FindIndex(
s => s.Expression == sortExpression.Expression);
if (index == 0)
{
collection[0].ToggleDirection();
}
else
{
if (index > 0)
{
collection.RemoveAt(index);
}
collection.Insert(0, sortExpression);
if (collection.Count > MaxSortSpecifications)
{
collection.RemoveRange(MaxSortSpecifications, 1);
}
}
// Re-serialize the SortExpressionCollection back into meta data
return collection.Serialize();
}