订单中的TKey

本文关键字:TKey 单中 | 更新日期: 2023-09-27 18:05:36

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

所以我可以这样做:

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

这个方法应该与实体框架一起工作。未定义TKey。我该怎么做呢?

订单中的TKey

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

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));
}