LINQ短构造函数作为动作

Shi*_*Sha 4 c# linq

使用linq我可以创建这样的查询

XElement.Elements("...").Select(x=> useX(x));
Run Code Online (Sandbox Code Playgroud)

现在因为x只创建一个包装器Action而useX的参数是XElement,你可以像这样使用它:

XElement.Elements("...").Select(useX);
Run Code Online (Sandbox Code Playgroud)

但是当我有一个具有匹配类型的构造函数的类型,即MyClass(XElement元素)时,我必须使用:

XElement.Elements("...").Select(x=> new MyClass(x));
Run Code Online (Sandbox Code Playgroud)

我的问题:有没有办法以上面的方式缩短对象的构造,但是有一个构造函数?我想象过这样的事情:

XElement.Elements("...").Select(MyClass);
Run Code Online (Sandbox Code Playgroud)

Jam*_*iec 8

有没有办法以上面的方式缩短对象的构造,但有一个构造函数

简答:不,没有.

更长的"回答"(实际上不是答案,如果你想要的话,更多的解决方法):

您可以添加静态构造方法MyClass:

public class MyClass
{
   public MyClass(XElement elem) 
   {
       // your constructor logic
   }

   public static MyClass Create(XElement elem)
   {
      return new MyClass(elem);
   }
}
Run Code Online (Sandbox Code Playgroud)

并使用它

XElement.Elements("...").Select(MyClass.Create);
Run Code Online (Sandbox Code Playgroud)

但它是否值得它取决于你!(个人意见:这不值得,坚持下去new MyClass(x))

  • @PatrickHofman*所有*是针对计算机不会说英语的问题的解决方法:) (5认同)