是否可以在没有迭代的情况下调用列表中的公共方法?

时间:2016-07-28 16:37:30

标签: c# linq

我使用C#并且我不知道它是否可能在同一时刻为列表中的所有对象调用一个方法,而没有像for或foreach这样的循环。

实施例

class Person
{
    public void doSomething()
    {
    //
    }
}

List<Person> _personlist = new List<Person>();

_personlist(SelectAll.doSomething()); //something like this
//invoke the same method at the same time for all the object in the list

我认为Linq允许这样做,但此刻我找不到任何东西。

4 个答案:

答案 0 :(得分:3)

无论哪种方式,您都必须迭代List。

LINQ对于产生副作用并不是很有用,它用于查询集合。您可以使用LINQ调用您的方法,但它将执行迭代(内部)

因此,最好使用显式循环结构来清楚地传达代码意图。

如果您的对象使用即时方法,则使用LINQ:

var something = yourList.Select(r=> r.MethodToCall()).ToList();

但不要做以上......

答案 1 :(得分:0)

如果您想编写可以并行操作的查询,请查看plinq

var _personlist = new List<Person>();
_personlist.AsParallel().ForAll(i=>i.DoSomething());

答案 2 :(得分:-1)

LINQ确实提供了ForEach扩展方法,可以为您提供单行选项。它在技术上仍然是一个循环....

这是我以前用过的一个例子......

List<StreamWriter> Writers;
...
Writers.ForEach(x => x.Write(...));

答案 3 :(得分:-1)

在List对象上,您可以调用扩展方法ForEach。

IEnumerable<int> numbers = new List<int>() { 1, 2, 3 };
numbers.ForEach(x => Console.WriteLine(x));
相关问题