相关疑难解决方法(0)

currying和部分应用有什么区别?

我经常在互联网上看到各种各样的抱怨,其他人的currying例子并不是currying,但实际上只是部分应用.

我没有找到关于部分应用是什么的合理解释,或者它与currying有何不同.似乎存在普遍的混淆,在某些地方将等效的例子描述为currying,在其他地方描述为部分应用.

有人可以向我提供这两个术语的定义,以及它们如何区别的细节吗?

language-agnostic terminology definition currying partial-application

416
推荐指数
10
解决办法
5万
查看次数

我可以重用代码来使用 EF Core 为子属性选择自定义 DTO 对象吗?

使用 Entity Framework Core 进行查询时,我使用表达式转换为 DTO 对象,这对于对象和任何子集合都很有效。

一个简化的例子:

模型:

public class Model
{
    public int ModelId { get; set; }
    public string ModelName { get; set; }

    public virtual ICollection<ChildModel> ChildModels { get; set; }

    // Other properties, collections, etc.

    public static Expression<Func<Model, ModelDto>> AsDto =>
        model => new ModelDto
        { 
            ModelId = model.ModelId,
            ModelName = model.ModelName,
            ChildModels = model.ChildModels.AsQueryable().Select(ChildModel.AsDto).ToList()
        };
}
Run Code Online (Sandbox Code Playgroud)

询问:

dbContext.Models.Where(m => SomeCriteria).Select(Model.AsDto).ToList();
Run Code Online (Sandbox Code Playgroud)

我的问题是试图找到一种方法为非集合的孩子做类似的事情。如果我已添加到我的模型中:

public AnotherChildModel AnotherChildModel { get; set; }
Run Code Online (Sandbox Code Playgroud)

我可以在表达式中添加转换:

public static Expression<Func<Model, ModelDto>> AsDto …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework expression-trees entity-framework-core

4
推荐指数
1
解决办法
1978
查看次数