使用Linq在对象集合上运行方法?

Sha*_*ica 14 c# linq

这是一个很长的镜头,我知道......

假设我有一个收藏品

List<MyClass> objects;
Run Code Online (Sandbox Code Playgroud)

我想在集合中的每个对象上运行相同的方法,有或没有返回值.在Linq之前我会说:

List<ReturnType> results = new List<ReturnType>();
List<int> FormulaResults = new List<int>();
foreach (MyClass obj in objects) {
  results.Add(obj.MyMethod());
  FormulaResults.Add(ApplyFormula(obj));
}
Run Code Online (Sandbox Code Playgroud)

我会到可以做这样的事情:

List<ReturnType> results = new List<ReturnType>();
results.AddRange(objects.Execute(obj => obj.MyMethod())); 
// obviously .Execute() above is fictitious
List<int> FormulaResults = new List<int>();
FormulaResults.AddRange(objects.Execute(obj => ApplyFormula(obj)));
Run Code Online (Sandbox Code Playgroud)

我还没有发现任何可以做到这一点的事情.有这样的事吗?

如果没有像我上面提到的那样通用,至少可能有一种方法可以用于我现在正在处理的目的:我有一个包含一个包装类的对象的集合:

class WrapperClass {
  private WrappedClass wrapped;
  public WrapperClass(WrappedClass wc) {
    this.wrapped = wc;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的代码有一个集合List<WrappedClass> objects,我想将其转换为List<WrapperClass>.是否有一些聪明的Linq这样做的方式,没有做单调乏味

List<WrapperClass> result = new List<WrapperClass>();
foreach (WrappedClass obj in objects)
  results.Add(new WrapperClass(obj));
Run Code Online (Sandbox Code Playgroud)

谢谢...

Mar*_*ell 18

将:

results.AddRange(objects.Select(obj => ApplyFormula(obj)));
Run Code Online (Sandbox Code Playgroud)

做?

或(更简单)

var results = objects.Select(obj => ApplyFormula(obj)).ToList();
Run Code Online (Sandbox Code Playgroud)