System.Linq.Expressions.Expression <func <tsource,tkey>&gt;中的TKey是什么?</func <tsource,tkey>

时间:2012-05-04 21:08:50

标签: c# linq expression

我正在尝试将Linq OrderBy子句所需的表达式存储在数据结构中,所以我可以去query = query.OrderBy(MySortExpression);

OrderBySystem.Linq.Expressions.Expression<Func<TSource,TKey>>作为参数。 TSource是您要排序的实体类型,但TKey应该是什么类型?

3 个答案:

答案 0 :(得分:4)

TKey是一个泛型类型参数,表示您对其进行排序的表达式的类型。例如,如果按长度对字符串进行排序,则TSource将为stringTKey将为int,如下面的代码所示:

string [] myStrings = new[] {"quick", "brown", "fox", "jumps"};
var ordered = myStrings.OrderBy(s => s.Length);

答案 1 :(得分:3)

TKey是表达式的返回类型。例如:

users.OrderBy(user => user.Name); 

由于Name是字符串,因此类型将为System.Linq.Expressions.Expression<Func<User,string>>

答案 2 :(得分:2)

TKey未绑定到特定类型。通常,它是属性到基本类型的投影,以启用排序。

假设Person具有BirthYear属性,您可以选择

 persons.OrderBy(p => p.BirthYear);