C# 如何传递表达式<;Func<;T、 布尔>&燃气轮机;谓词作为方法的参数?
我有一个处理交易的高阶函数:C# 如何传递表达式<;Func<;T、 布尔>&燃气轮机;谓词作为方法的参数?,c#,linq,generics,delegates,C#,Linq,Generics,Delegates,我有一个处理交易的高阶函数: public static void ExecuteTransaction<Context, FunctionParameter>(Action<FunctionParameter> functionToBeExecuted, FunctionParameter parameter,
public static void ExecuteTransaction<Context, FunctionParameter>(Action<FunctionParameter> functionToBeExecuted,
FunctionParameter parameter,
Context context)
where Context : DbContext
{
using (var transaction = context.Database.BeginTransaction())
{
try
{
functionToBeExecuted(parameter);
context.SaveChanges();
transaction.Commit();
}
catch (Exception)
{
transaction.Rollback();
throw;
}
}
}
public static void ExecuteTransaction(要执行的操作函数),
函数参数,
上下文(上下文)
其中Context:DbContext
{
使用(var transaction=context.Database.BeginTransaction())
{
尝试
{
要执行的功能(参数);
SaveChanges();
Commit();
}
捕获(例外)
{
transaction.Rollback();
投掷;
}
}
}
如何更改ExecuteTransaction方法以接受此方法及其参数
public void DeleteBy(Expression<Func<TEntity, bool>> predicate)
{
var results = DbSet.Where(predicate).ToList();
DbSet.RemoveRange(results);
}
public void DeleteBy(表达式谓词)
{
var results=DbSet.Where(谓词).ToList();
DbSet.removange(结果);
}
如果我理解正确,您正在尝试将DeleteBy
传递给ExecuteTransaction
,并让ExecuteTransaction
运行该方法
假设您已经准备了一个表达式
作为DeleteBy
的参数:
Expression<Func<TEntity, bool>> param = entity => /*some lambda that returns a bool */;
编译器将自动推断
函数参数
是表达式
如果我理解正确,您正在尝试将DeleteBy
传递给ExecuteTransaction
,并让ExecuteTransaction
运行该方法
假设您已经准备了一个表达式
作为DeleteBy
的参数:
Expression<Func<TEntity, bool>> param = entity => /*some lambda that returns a bool */;
编译器将自动推断
函数参数
是表达式
动作
?动作
?就是这样,我是一个c#新手。就是这样,我是一个c#新手。