private IEnumerable<UploadListViewModel> Sort(IEnumerable<UploadListViewModel> collection, string sortBy, ListSortDirection direction)
{
var list = new List<UploadListViewModel>(collection);
if (sortBy == LanguagesManager.Instance.UploadControl_Name)
{
list.Sort((x, y) =>
{
int c = x.Name.CompareTo(y.Name);
if (c != 0) return c;
c = x.Id.CompareTo(y.Id);
if (c != 0) return c;
return 0;
});
}
else if (sortBy == LanguagesManager.Instance.UploadControl_Length)
{
list.Sort((x, y) =>
{
int c = x.Length.CompareTo(y.Length);
if (c != 0) return c;
c = x.Name.CompareTo(y.Name);
if (c != 0) return c;
c = x.Id.CompareTo(y.Id);
if (c != 0) return c;
return 0;
});
}
else if (sortBy == LanguagesManager.Instance.UploadControl_Priority)
{
list.Sort((x, y) =>
{
int c = x.Priority.CompareTo(y.Priority);
if (c != 0) return c;
c = x.Name.CompareTo(y.Name);
if (c != 0) return c;
c = x.Id.CompareTo(y.Id);
if (c != 0) return c;
return 0;
});
}
else if (sortBy == LanguagesManager.Instance.UploadControl_Rate)
{
list.Sort((x, y) =>
{
int c = x.State.CompareTo(y.State);
if (c != 0) return c;
c = x.Rate.CompareTo(y.Rate);
if (c != 0) return c;
c = x.Depth.CompareTo(y.Depth);
if (c != 0) return c;
c = x.Name.CompareTo(y.Name);
if (c != 0) return c;
c = x.Id.CompareTo(y.Id);
if (c != 0) return c;
return 0;
});
}
else if (sortBy == LanguagesManager.Instance.UploadControl_Path)
{
list.Sort((x, y) =>
{
int c = x.Path.CompareTo(y.Path);
if (c != 0) return c;
c = x.Name.CompareTo(y.Name);
if (c != 0) return c;
c = x.Id.CompareTo(y.Id);
if (c != 0) return c;
return 0;
});
}
else if (sortBy == LanguagesManager.Instance.UploadControl_CreationTime)
{
list.Sort((x, y) =>
{
int c = x.CreationTime.CompareTo(y.CreationTime);
if (c != 0) return c;
c = x.Name.CompareTo(y.Name);
if (c != 0) return c;
c = x.Id.CompareTo(y.Id);
if (c != 0) return c;
return 0;
});
}
else if (sortBy == LanguagesManager.Instance.UploadControl_State)
{
list.Sort((x, y) =>
{
int c = x.State.CompareTo(y.State);
if (c != 0) return c;
c = x.Name.CompareTo(y.Name);
if (c != 0) return c;
c = x.Id.CompareTo(y.Id);
if (c != 0) return c;
return 0;
});
}
if (direction == ListSortDirection.Descending)
{
list.Reverse();
}
return list;
}