Linq自定义排序的写法(方法一)
第一步:
需要编写一个obiect方法用于转换:
#region linq自定义排序方法 public static object GetPropertyValue(object obj, string property) { System.Reflection.PropertyInfo propertyInfo = obj.GetType().GetProperty(property); return propertyInfo.GetValue(obj, null); } #endregion
优化:
public static object GetPropertyValue(this object obj, string property) { if (obj == null) return null; var propertyInfo = obj.GetType().GetProperty(property); return propertyInfo?.GetValue(obj, null) ?? null; }
第二步运用:
var sortField1s="CompanyName"; if (SortField == "desc") { list_Subject = list_Subject.OrderByDescending(r => GetPropertyValue(r, "CompanyName")).Skip(PageSize * PageIndex).Take(PageSize).ToList(); //优化:list_Subject = list_Subject.OrderByDescending(r => GetPropertyValue(sortField1s)).Skip(PageSize * PageIndex).Take(PageSize).ToList(); }
else
{
list_Subject = list_Subject.OrderBy(r => GetPropertyValue(r,"CompanyName")).Skip(PageSize * PageIndex).Take(PageSize).ToList(); }
list_Subject:是你要进行排序的集合;
C#相关写法