csharp C#使用Lambda表达式为动态类型和动态属性排序通用列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp C#使用Lambda表达式为动态类型和动态属性排序通用列表相关的知识,希望对你有一定的参考价值。
/// Lifted from http://microsoftprogrammers.jebarson.com/sort-generic-list-using-lambda-expression-for-dynamic-type-and-dynamic-property/
/// Usage :
/// List<Employee> sortedEmployees = new Utility<Employee>().GetSortedList(employeeList, "City", SortDirection.Ascending);
public class Utility<T>
{
/// <Summary>
/// Gets the sorted list.
/// </Summary>
/// <param name="source" />The source.
/// <param name="sortColumn" />The sort column.
/// <param name="sortDirection" />The sort direction.
/// <The sorted list. />
private List<T> GetSortedList(List<T> source, string sortColumn, SortDirection sortDirection)
{
// Prepare the dynamic sort expression
var paramExp = Expression.Parameter(typeof(T), typeof(T).ToString());
Expression propConvExp =
Expression.Convert(Expression.Property(paramExp, sortColumn), typeof(object));
var sortExp = Expression.Lambda>(propConvExp, paramExp);
if (sortDirection == SortDirection.Ascending)
{
return source.AsQueryable().OrderBy(sortExp).ToList();
}
else
{
return source.AsQueryable().OrderByDescending(sortExp).ToList();
}
}
}
以上是关于csharp C#使用Lambda表达式为动态类型和动态属性排序通用列表的主要内容,如果未能解决你的问题,请参考以下文章
c# 动态创建带字符串拼接的lambda表达式?
C++Lambda表达式作为参数
C++Lambda表达式作为参数
C++Lambda表达式作为参数
lambda表达式
根据表达式树动态生成Lambda表达式