代码之家  ›  专栏  ›  技术社区  ›  JMarsch

另一个Linq翻译问题

  •  3
  • JMarsch  · 技术社区  · 15 年前

    好的,我正在迭代一个集合。对于满足某些条件的每个成员,我想对该成员调用一个方法:

    我现在是这样做的:

    
    foreach(MyObject obj in myCollection)
    {
      if(obj.Property == theSearchValue)
        obj.DoIt();
    }
    
    

    (我看到的许多linq操作看起来都很整洁,但它们通常会导致创建中间枚举,或者有时会多次枚举集合——我的little foreach只需一次就解决了问题,没有创建临时集合。)

    2 回复  |  直到 15 年前
        1
  •  2
  •   AndreyAkinshin    15 年前
    foreach (MyObject obj in 
                        myCollection.Where(item => item.Property == theSearchValue))
        obj.DoIt();
    
        2
  •  5
  •   Justin Niessner    15 年前

    var matches = myCollection.Where(i => i.Property == theSearchValue);
    
    foreach(var item in matches)
        item.DoIt();
    

    您还可以使用扩展方法添加 Each()

    myCollection.Where(i => i.Property == theSearchValue).Each(i => i.DoIt());