C# 循环遍历列表并执行函数

C# 循环遍历列表并执行函数,c#,C#,我有一个对象模型,其中包含几个其他对象的列表。我想循环列表中的每个对象,并对它们执行一个方法。该方法称为MyMethod,列表中的每个对象在其类定义中都有此方法 这就是我所拥有的: public class MyObject { public List<NestedObject1> ListNestedObject1 { get; set; } public List<NestedObject2> ListNestedObject2 { get; set; }

我有一个对象模型,其中包含几个其他对象的列表。我想循环列表中的每个对象,并对它们执行一个方法。该方法称为MyMethod,列表中的每个对象在其类定义中都有此方法

这就是我所拥有的:

public class MyObject
{
  public List<NestedObject1> ListNestedObject1 { get; set; }
  public List<NestedObject2> ListNestedObject2 { get; set; }

  public void ExecuteMethodsOfNestedObjectLists()
  {
    if (ListNestedObject1.Count > 0) { from a in ListNestedObject1 a.MyMethod();}
    if (ListNestedObject2.Count > 0) { from a in ListNestedObject2 a.MyMethod();}
  }
}
公共类MyObject
{
公共列表ListNestedObject 1{get;set;}
公共列表ListNestedObject 2{get;set;}
public void estedObjectList()的ExecuteMethods
{
如果(ListNestedObject1.Count>0){来自ListNestedObject1 a.MyMethod();}
如果(ListNestedObject2.Count>0){来自ListNestedObject2 a.MyMethod();}
}
}
我希望测试每个嵌套对象列表的长度,并在每个元素上执行MyMethod。我知道我可以做一个foreach循环,但我想看看如何使用linq语法来保持它的简短

我如何重写它才能使它工作

谢谢。

代替

 if (ListNestedObject1.Count > 0) { from a in ListNestedObject1 a.MyMethod(); }
使用

以类似方式替换
列表嵌套对象2的查询,而不是

 if (ListNestedObject1.Count > 0) { from a in ListNestedObject1 a.MyMethod(); }
使用


对于
列表嵌套对象2

类似地替换查询,您应该使用foreach循环。这就是它的目的

Linq是为查询数据而设计的,而不是为产生副作用而设计的。看起来您正在寻找的是Linq
ForEach
扩展方法。Eric Lippert,如果您感兴趣,为什么在语言中故意省略更详细的内容


当然,您可以忽略这些哲学问题,编写自己的
ForEach
方法。

您应该使用ForEach循环。这就是它的目的

Linq是为查询数据而设计的,而不是为产生副作用而设计的。看起来您正在寻找的是Linq
ForEach
扩展方法。Eric Lippert,如果您感兴趣,为什么在语言中故意省略更详细的内容

当然,您可以忽略这些哲学问题,编写自己的
ForEach
方法。

您可以使用
List
中的扩展方法,它实际上与
ForEach
循环相同。请注意,这在
IEnumerable
上是不可用的,一般来说,是否应该使用它来代替
foreach
循环存在很大的争议

MyObject.ListNestedObject1.ForEach(MyMethod);
MyObject.ListNestedObject2.ForEach(MyMethod);
您可以使用
List
中的扩展方法,它实际上与
foreach
循环相同。请注意,这在
IEnumerable
上是不可用的,一般来说,是否应该使用它来代替
foreach
循环存在很大的争议

MyObject.ListNestedObject1.ForEach(MyMethod);
MyObject.ListNestedObject2.ForEach(MyMethod);

那么您要问的是如何对每个嵌套对象执行此方法

ListNestedObject1.ForEach(obj => obj.MyMethod());
ListNestedObject2.ForEach(obj => obj.MyMethod()); 

注意:不是LINQ(尽管它有类似的外观),而是在.NET2.0中引入的

那么您要问的是如何对每个嵌套对象执行此方法

ListNestedObject1.ForEach(obj => obj.MyMethod());
ListNestedObject2.ForEach(obj => obj.MyMethod()); 
注意:不是LINQ(尽管它有类似的外观),而是在.NET2.0中引入的