我正在尝试将 LinqOrderBy子句所需的表达式存储在数据结构中,所以我可以去query = query.OrderBy(MySortExpression);
OrderBySystem.Linq.Expressions.Expression<Func<TSource,TKey>>作为参数 。TSource是您要排序的实体类型,但TKey应该是什么类型?
我正在尝试将 LinqOrderBy子句所需的表达式存储在数据结构中,所以我可以去query = query.OrderBy(MySortExpression);
OrderBySystem.Linq.Expressions.Expression<Func<TSource,TKey>>作为参数 。TSource是您要排序的实体类型,但TKey应该是什么类型?
TKey是一个泛型类型参数,表示您排序的表达式的类型。例如,如果您按长度对字符串进行排序,TSource则 will bestring和TKeywill be int,如下面的代码所示:
string [] myStrings = new[] {"quick", "brown", "fox", "jumps"};
var ordered = myStrings.OrderBy(s => s.Length);
TKey 是表达式的返回类型的类型。例如:
users.OrderBy(user => user.Name);
由于 Name 是字符串,因此类型将是System.Linq.Expressions.Expression<Func<User,string>>
TKey不绑定到特定类型。通常它是将属性投影到原始类型以启用排序。
假设Person具有BirthYear您将选择的属性
persons.OrderBy(p => p.BirthYear);