用于创建新对象并设置其属性的类似 Linq 的扩展?如何?

Linq-Like extension for creating a new object and setting its properties? How to?

我正在尝试为类型对象创建一个扩展方法,它将创建一种初始化对象和设置其属性的新方法。然而,我 运行 遇到了一些问题。扩展名如下所示:

public static class ObjectExtension
{
    public static TResult Select<TSource,TResult>(this TSource obj, Func<TSource, TResult> selector)
    {

        return selector.Invoke(obj);
    }
}

这就是我正在寻找的结果:

return new Product().Select(p => p.Category = new Category(), p.Name = "something");

你可能会说我的理解太少了。我无法理解 Func 的概念以及如何使用它们。我的问题是这是否可能以及 how/what 我需要去完成这个方向吗?

我的灵感来源于此:Here

使用以下代码:

IEnumerable<int> squares =
Enumerable.Range(1, 10).Select(x => x * x);

我想做类似的事情,除了不是从列表中,并且能够设置多个属性。

这将修复您的代码:

    return new Product().Select(p => 
             { p.Category = new Category(); p.Name = "something"; return p;});

您的问题是 "comma as function parameter separator" 优先于 "comma as a weird way of join expressions in C that doesn't work in C# anyway"。您需要那里的完整块 lambda 表达式。

但正如 Ed Plunkett 在他的评论中指出的那样,这可以简化为:

return new Product {Category = new Category(), Name = "something"};