LINQ中的动态排序
使用Linq動態屬性排序
使用反射:?
public?static?Func<T,Tkey>?DynamicLambda<T,?Tkey>(string?propertyName)
????????{
????????????ParameterExpression?p?=?Expression.Parameter(typeof(T),?"p");
????????????Expression?body?=?Expression.Property(p,?typeof(T).GetProperty(propertyName));
????????????var?lambda?=?Expression.Lambda<Func<T,?Tkey>>(body,?p);
????????????return?lambda.Compile();
????????}
調用:
List<Employee>?list?=?new?List<Employee>();
????????????list.Add(new?Employee()?{?Name?=?"張三",?Age?=?21,?Salary?=?1800f,?Job?=?"UI"?});
????????????list.Add(new?Employee()?{?Name?=?"李四",?Age?=?25,?Salary?=?2000f,?Job?=?"DBA"?});
????????????list.Add(new?Employee()?{?Name?=?"王五",?Age?=?24,?Salary?=?2000f,?Job?=?"UI"?});
????????????list.Add(new?Employee()?{?Name?=?"李九",?Age?=?31,?Salary?=?2900f,?Job?=?"DBA"?});
????????????list.Add(new?Employee()?{?Name?=?"張一",?Age?=?21,?Salary?=?2100f,?Job?=?"UI"?});
????????????list.Add(new?Employee()?{?Name?=?"王三",?Age?=?32,?Salary?=?2100f,?Job?=?"DBA"?});
?????????????//按Age排序
????????????list.OrderBy(DynamicLambda<Employee,int>("Age"));
????????????//按Salary排序
????????????//?list.OrderBy(DynamicLambda<Employee,float>("Salary"));
????????????list.ForEach(e?=>?Console.WriteLine(e.Name?+?"\t"?+?e.Age?+?"\t"?+?e.Salary));
總結
以上是生活随笔為你收集整理的LINQ中的动态排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 闻王昌龄左迁龙标遥有此寄名句欣赏(闻王昌
- 下一篇: 汉川市社保查询网(汉川市社保查询)