来自OrderBy的TKey

时间:2011-08-13 19:47:20

标签: c# .net entity-framework linq-to-entities

我想创建一个接收一个参数的函数:
1.委托获取任何MyObj实例并返回一个键(如OrderBy方法)。

所以我可以做到以下几点:

function IQueryable<Worker> doSomething(Func<Worker, TKey> getter) {
    Workers.Where(x=>getter(x)==9);
}

此方法应与实体框架一起使用。 TKey不是默默无闻的。我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果要将其与特定类型(如整数)进行比较,只需在签名中使用该类型:

public IQueryable<Worker> doSomething(Func<Worker, int> getter) {
  Workers.Where(x => getter(x) == 9);
}

否则,您必须将其作为泛型类型包含,并为比较提供该类型的值:

public IQueryable<Worker> doSomething<TKey>(Func<Worker, TKey> getter, TKey value) {
  Workers.Where(x => getter(x).Equals(value));
}