是否可以编辑或展开作为参数传递的 linq 表达式
本文关键字:参数传递 linq 表达式 编辑 是否 | 更新日期: 2023-09-27 18:36:16
Pseduocode:
var pocos = GetPOCOs(p => !p.IsDeleted);
public List<MyPoco> GetPOCOs(Expression<Func<MyPoco, bool>> exp)
{
List<MyPoco> pocos = new List<MyPoco>();
foreach (int i in MyListOfIntegers)
{
// this will not compile - but is a similar function possible?
pocos.AddRange(GetPocos().Where(exp && p => p.PocoId == i));
}
return pocos;
}
我知道还有其他方法可以解决这个问题(即只需过滤列表两次),我只是好奇。
当我需要操纵条件时,我只是尽可能使用IQueryable
,并在最后一刻实现它。我在应用程序中创建报告时使用它(根据用户输入添加不同的过滤器)。
IQueryable<MyObj> qry = MyDAL.GetObjs();
if (someCond) {
qry = qry.Where(p => p.SomeCond == someValue);
}
if (someOtherCond) {
qry = qry.Where(p => someCollection.Contains(p.SomeValue));
}
return qry;