ComputerGraphics/20210129/doc/zxq/NwGeoExporter/NwGeoExporter/NwEx/IEnumerableEx.cs

68 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NwGeoExporter.NwEx
{
public static class IEnumerableEx
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="arr"></param>
/// <returns></returns>
public static T[] ToArray<T>(this Array arr)
{
T[] result = new T[arr.Length];
Array.Copy(arr, result, result.Length);
return result;
}
/// <summary>
/// 找到第一个索引
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="array"></param>
/// <param name="func"></param>
/// <returns></returns>
public static int FindIndex<T>(this IEnumerable<T> array, Func<T, bool> func)
{
if (func == null) return -1;
for (int i = 0; i < array.Count(); i++)
{
var t = array.ElementAt(i);
if (func(t))
{
return i;
}
}
return -1;
}
/// <summary>
/// 找到所有的索引
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="array"></param>
/// <param name="func"></param>
/// <returns></returns>
public static List<int> FindIndexs<T>(this IEnumerable<T> array, Func<T, bool> func)
{
List<int> indexList = new List<int>();
if (func == null) return null;
for (int i = 0; i < array.Count(); i++)
{
var t = array.ElementAt(i);
if (func(t))
{
indexList.Add(i);
}
}
return indexList.Count == 0 ? null : indexList;
}
}
}