我可以将表达式传递给 LINQ Select() 方法:
public IQueryable<T> GetInfo(long limit, Expression<Func<MyType, T>> selector)
{
return DbSet.Where(t => t.id < limit).Select(selector)
}
如何使用 LINQ 风格的查询来做同样的事情?
public IQueryable<T> GetInfo(long limit, Expression<Func<MyType, T>> selector)
{
var result = from t in DbSet
where t.id < limit
select selector(t) // doesn't work
return result
}
最佳答案
你可以使用:
var result = (from t in DbSet
where t.id < limit
select t).Select(selector);
...但是您不能只在查询表达式内部使用选择器,因为它隐式包装了您不需要的额外层。
不清楚您为什么要在这里使用查询表达式,请注意 - 我强烈建议您熟悉这两种 LINQ 风格并使用当时更合适的任何一种 - 在这种情况下就是您拥有的风格在您的原始代码中。
关于c# - 如何将表达式传递到 LINQ 查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35223245/