public static IList<T> Sort<T>(this IList<T> source, string sortProper, bool asc)
{
if (source != null && source.Any())
{
var properties = typeof(T).GetProperties();
PropertyInfo pro = null;
foreach (var item in properties)
{
if (item.Name.ToUpper().Equals(sortProper.ToUpper()))
{
pro = item;
break;
}
}
for (int i = 0; i < source.Count; i++)
{
T t;
for (int k = 0; k < source.Count; k++)
{
int compare = pro.GetValue(source[i], null).ToString().CompareTo(pro.GetValue(source[k], null).ToString());
if ((asc && compare <0)||(!asc && compare > 0))
{
t = source[i];
source[i] = source[k];
source[k] = t;
}
}
}
return source;
}
return null;
}