linq的扩展方法中有FindIndex,FindLastIndex两个方法可以查找满足条件的首个和最后一个数据的索引值,利用delegate将匹配条件的方法传入FindAllIndex,查找满足匹配条件的所有索引返回
/// <summary> /// 返回list内所有满足where条件的元素的索引 /// </summary> public static List<int> FindAllIndex<T>(this List<T> list, Func<T, bool> where) { List<int> indexs = new List<int>(); if (list != null) { for (int i = 0; i < list.Count; i++) { if (where(list[i])) { indexs.Add(i); } } } return indexs; }
测试:
public void Test() { List<string> datas = new List<string>(); datas.Add("格力"); datas.Add("铁蛋儿"); datas.Add("english"); datas.Add("toyota"); datas.Add("A"); var indexs = datas.FindAllIndex(e => e.Length > 2); foreach (int i in indexs) { Console.WriteLine("索引:" + i + ";值:" + datas[i]); } }
时间: 2024-10-11 06:52:08