I have a code which is in my opinion bad, because it has the similar statement repeated in each case statement:
if (command.OrderProperty.ToLower().Equals("asc"))
{
accessForms.Forms = accessForms.Forms.OrderBy(o => o.NumberForSort).ToList();
}
else
{
accessForms.Forms = accessForms.Forms.OrderByDescending(o => o.NumberForSort).ToList();
}
The only thing which is different is the property on which the query is ordered.
switch (command.SortProperty.ToLower())
{
case "number":
if (command.OrderProperty.ToLower().Equals("asc"))
{
accessForms.Forms = accessForms.Forms.OrderBy(o => o.NumberForSort).ToList();
}
else
{
accessForms.Forms = accessForms.Forms.OrderByDescending(o => o.NumberForSort).ToList();
}
break;
case "type":
if (command.OrderProperty.ToLower().Equals("asc"))
{
accessForms.Forms = accessForms.Forms.OrderBy(o => o.Type).ToList();
}
else
{
accessForms.Forms = accessForms.Forms.OrderByDescending(o => o.Type).ToList();
}
break;
case "employeename":
if (command.OrderProperty.ToLower().Equals("asc"))
{
accessForms.Forms = accessForms.Forms.OrderBy(o => o.EmployeeName).ToList();
}
else
{
accessForms.Forms = accessForms.Forms.OrderByDescending(o => o.EmployeeName).ToList();
}
break;
case "requestingemployeename":
(...)
}
accessForms.Forms
is a List<>
. I would like to make this code more cleaner and shorter, but I have no idea how to achieve that.