为IEnumerable扩展一个ForEach方法
Posted Insus.NET
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为IEnumerable扩展一个ForEach方法相关的知识,希望对你有一定的参考价值。
IEnumerable没有一个ForEach方法,我们可以使用C#写一个扩展方法:
Source Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Insus.NET.ExtendMethods { public static class Enumerables { public static void ForEach<T>(this IEnumerable<T> source, Action<T> action) { foreach (T item in source) { action(item); } } } }
下例中,Insus.NET列举一个IEnumerable数据集,然后使用这个方法来获取其中的元素:
Source Code:
public IEnumerable<IDictionary<string, object>> Links() { var dict = new Dictionary<string, object>(); dict["Index"] = "新产品介绍"; dict["Manufacturing"] = "制造能力/流程"; dict["DieCasting"] = "压铸"; dict["Machining"] = "加工"; dict["AssemblyFinishing"] = "组装&成品"; dict["TestReliability"] = "测试和可靠性"; dict["KeyCustomer"] = "关键客户"; yield return dict; }
Source Code:
obj.Links().ForEach(delegate (IDictionary<string, object> dict) { foreach (KeyValuePair<string, object> kvp in dict) { //kvp.Key //kvp.Value } });
以上是关于为IEnumerable扩展一个ForEach方法的主要内容,如果未能解决你的问题,请参考以下文章
foreach遍历访问的对象必须实现IEnumerable 或声明GetEnumerator
Parallel.ForEach() 与 foreach(IEnumerable<T>.AsParallel())