我有一个 lambda 表达式,我希望能够传递和重用它。这是代码:
public List<IJob> getJobs(/* i want to pass the lambda expr in here */) {
using (SqlConnection connection = new SqlConnection(getConnectionString())) {
connection.Open();
return connection.Query<FullTimeJob, Student, FullTimeJob>(sql,
(job, student) => {
job.Student = student;
job.StudentId = student.Id;
return job;
},
splitOn: "user_id",
param: parameters).ToList<IJob>();
}
这里的关键是,我希望能够将我在此处使用的 lambda 表达式传递到调用此代码的方法中,以便我可以重用它。 lambda 表达式是我的 .Query 方法中的第二个参数。我假设我想使用 Action 或 Func,但我不太确定它的语法是什么或它是如何工作的。有人可以给我举个例子吗?
最佳答案
使用 Func<T1, T2, TResult>
委托(delegate)作为参数类型并将其传递给您的 Query
:
public List<IJob> getJobs(Func<FullTimeJob, Student, FullTimeJob> lambda)
{
using (SqlConnection connection = new SqlConnection(getConnectionString())) {
connection.Open();
return connection.Query<FullTimeJob, Student, FullTimeJob>(sql,
lambda,
splitOn: "user_id",
param: parameters).ToList<IJob>();
}
}
你会这样调用它:
getJobs((job, student) => {
job.Student = student;
job.StudentId = student.Id;
return job;
});
或者将 lambda 赋值给一个变量并传入它。
关于C# 将 Lambda 表达式作为方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14297633/