如何在IEnumerable的末尾添加更多查询
本文关键字:添加 查询 IEnumerable | 更新日期: 2023-09-27 18:15:15
我想将查询的一部分作为方法的参数传递。
public IEnumerable<ServiceModel> Get(/*What would the type be*/ rightQuery)
{
IEnumerable<EntityModel> leftQuery = repository.GetAll;
// the query appending might look something like this:
var outcomeBeforeMapping = leftQuery.rightQuery;
// ...rest is not important
}
调用可能像这样:
service.Get((query) => query.OrderByDescending(project => project.SortOrder));
我该怎么做呢?
听起来您只是想要一个Func<IEnumerable<ServiceModel>, IEnumerable<ServiceModel>>
—换句话说,"给定一个查询,我会给您另一个查询。"
public IEnumerable<ServiceModel> Get(
Func<IEnumerable<ServiceModel>, IEnumerable<ServiceModel>> transform)
{
IEnumerable<EntityModel> leftQuery = repository.GetAll;
var outcomeBeforeMapping = transform(leftQuery);
...
}
你应该考虑使用IQueryable<T>
而不是IEnumerable<T>
,如果你使用EF等,允许转换影响SQL,而不是只在本地应用。
您还应该考虑简单地将操作的第一部分与第二部分分开—允许用户调用GetAll()
,做他们想做的事情,然后将结果传递回第二个方法。