出于 DRY 的原因,我喜欢重用表达式,但如何在 LINQ 语句中重用表达式?
例如
我有
public static class MyExpressions {
public static Expression<Func<Product,bool>> IsAGoodProduct() {
return (p) => p.Quality>3;
}
}
并且想在 LINQ 语句中使用它,所以
var goodProds = from p in dataContext.Products
where ????? // how do I use IsAGoodProduct here?
select p;
当然,我可以使用 IQueryableExtension.Where 函数,但是对于更复杂的查询,这会使连接和其他函数变得更难看。
这是可能的还是 LINQ 的限制?
最佳答案
如果您从 LINQ 语法糖转移,则可能:
var goodProds = dataContext.Products.Where(MyExpressions.IsAGoodProduct());
没有它,这是不可能的。
不过,没有什么可以阻止您混合使用这两种样式来构建单个查询。
例子:
var goodProds = from p in dataContext.Products
.Where(MyExpressions.IsAGoodProduct())
group p by p.Category into g
select new {Category = g.Key, ProductCount = g.Group.Count()};
关于c# - 如何在 LINQ 语句中重用表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986877/