我想在LINQ中做相同的以下内容,但我无法弄清楚如何:
IEnumerable<Item> items = GetItems();
items.ForEach(i => i.DoStuff());
Run Code Online (Sandbox Code Playgroud)
什么是真正的语法?
受到另一个询问失踪问题的启发 Zip功能的:
为什么课堂上没有ForEach扩展方法Enumerable?还是在任 唯一获得ForEach方法的类是List<>.有没有理由错过(表演)?
是否有"For each"操作的Linq样式语法?
例如,将基于一个集合的值添加到另一个集合,已存在的集合:
IEnumerable<int> someValues = new List<int>() { 1, 2, 3 };
IList<int> list = new List<int>();
someValues.ForEach(x => list.Add(x + 1));
Run Code Online (Sandbox Code Playgroud)
代替
foreach(int value in someValues)
{
list.Add(value + 1);
}
Run Code Online (Sandbox Code Playgroud) 您更喜欢哪一种?
foreach(var zombie in zombies)
{
zombie.ShuffleTowardsSurvivors();
zombie.EatNearbyBrains();
}
Run Code Online (Sandbox Code Playgroud)
要么
zombies.Each(zombie => {
zombie.ShuffleTowardsSurvivors();
zombie.EatNearbyBrains();
});
Run Code Online (Sandbox Code Playgroud) 用于ienumerable的linq扩展方法非常方便......但是如果你想要做的就是对枚举中的每个项应用一些计算而不返回任何内容,那就没有用了.所以我想知道我是否只是错过了正确的方法,或者它是否真的不存在,因为我宁愿使用内置版本,如果它可用......但我还没找到一个:-)
我可以发誓在某处有一个.ForEach方法,但我还没有找到它.与此同时,我确实编写了自己的版本,以防它对其他人有用:
using System.Collections;
using System.Collections.Generic;
public delegate void Function<T>(T item);
public delegate void Function(object item);
public static class EnumerableExtensions
{
public static void For(this IEnumerable enumerable, Function func)
{
foreach (object item in enumerable)
{
func(item);
}
}
public static void For<T>(this IEnumerable<T> enumerable, Function<T> func)
{
foreach (T item in enumerable)
{
func(item);
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法是:
myEnumerable.For<MyClass>(delegate(MyClass item) { item.Count++; });
有没有更好的方法来使用LINQ进行这些分配?
IEnumerable<SideBarUnit> sulist1 = newlist.Where(c => c.StatusID == EmergencyCV.ID);
foreach (SideBarUnit su in sulist1) su.color = "Red";
Run Code Online (Sandbox Code Playgroud)