TEntity Single(Expression<Func<TEntity, bool>> predicate);
请解释参数。
答案 0 :(得分:8)
所以,这里有很多内容,但让我们从内部开始:
Func<TEntity, bool>
是一个接受输入的委托,该类型是通用的,所以我们只称它为TEntity
。没有任何约束,这可以是任何东西,但是强类型的东西。
一个级别是Expression<Func<TEntity, bool>>
。这是表达式树,它被强类型化为一个委托,它接受一个输入并返回一个bool。换句话说,它是表达函数的表达式树(回想你的编译器课程)。
最后,最外层:TEntity Single(Expression<Func<TEntity, bool>> predicate)
是一个名为Single
的方法,它以表达式的形式获取谓词函数。返回的内容与传递给该函数的类型相同。
基本上,Single
将接受表达式,编译它并针对一组数据执行它,返回集合中与谓词表达式匹配的第一个实体。
希望这有帮助吗?
答案 1 :(得分:0)
这是一个expression,用于指定任何代理函数,它接受任何“TEntity”(在本例中由您调用它的集合中定义)并返回一个bool。实际上,委托是使用lambda函数指定的:
items.Single(i => i.Id == 1);
在您的示例中,Single函数是一个扩展方法,应用于TEntity的泛型集合(我认为没有任何限制 - 即必须只是对象)。因此,TEntity的类型是根据您调用它的集合推断的。