【发布时间】:2009-06-23 12:34:56
【问题描述】:
这是一个远射,我知道......
假设我有一个收藏
List<MyClass> objects;
我想在集合中的每个对象上运行相同的方法,无论有没有返回值。在 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));
}
我希望喜欢能够做这样的事情:
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)));
我还没有找到任何可以做到这一点的东西。有这种事吗?
如果没有像我上面所说的那样通用,至少也许有一种方法可以用于我现在正在研究的目的:我有一个具有包装类的对象的集合:
class WrapperClass {
private WrappedClass wrapped;
public WrapperClass(WrappedClass wc) {
this.wrapped = wc;
}
}
我的代码有一个集合List<WrappedClass> objects,我想将其转换为List<WrapperClass>。有没有一些聪明的 Linq 方法可以做到这一点,而不用做繁琐的操作
List<WrapperClass> result = new List<WrapperClass>();
foreach (WrappedClass obj in objects)
results.Add(new WrapperClass(obj));
谢谢...
【问题讨论】: