有没有办法从已知的 where 子句中获取表达式,然后将其传递给其他 Where(<expression>)
条款?
我正在使用 .NET Core 3.0 预览版和 EF Core 预览版。
包括linq和linq dynamic
public void myFunction ()
{
var expression = GetAllItems()
.Where(x => x.Id == 5 && x.Desc.Contains("foos"))
.AwesomeGetExpressioneMagicFunction();
var res = GenericBeforeSaveValidation(expression);
}
public IQueryable<T> GenericBeforeSaveValidation("delegate/expression" exp)
{
//some generic stuff before
return sourceItems.Where(exp);
}
最佳答案
只需将 lambda 保存在一个函数变量中并重用它:
public void myFunction ()
{
Expression<Func<ItemType, bool>> expression = x => x.Id == 5 && x.Desc.Contains("foos");
var items = GetAllItems()
.Where(expression)
.ToList();
var res = GenericBeforeSaveValidation(expression);
}
public IQueryable<ItemType> GenericBeforeSaveValidation(Expression<Func<ItemType, bool>> exp)
{
//some generic stuff before
return sourceItems.Where(exp);
}
“itemType”是您项目的实际类型。
关于c# - 从 where 子句或 IQueryable/IEnumerable 获取 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57852666/