gpt4 book ai didi

c# - 如何在 IEnumerable 的末尾添加更多查询

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:27 25 4
gpt4 key购买 nike

我想将查询的一部分作为方法的参数传递。

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() ,做他们想做的事,然后将结果传递回第二个方法。

关于c# - 如何在 IEnumerable 的末尾添加更多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40294509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com