com.alicizax.unity/Runtime/Helper/DistinctHelper.cs
陈思海 bf0d8340af init
2025-02-07 16:04:12 +08:00

35 lines
983 B
C#

using System;
using System.Collections.Generic;
namespace AlicizaX.Runtime
{
/// <summary>
/// 去重。帮助类
/// </summary>
[UnityEngine.Scripting.Preserve]
public static class DistinctHelper
{
/// <summary>
/// 根据条件去重
/// </summary>
/// <param name="source"></param>
/// <param name="keySelector"></param>
/// <typeparam name="TSource"></typeparam>
/// <typeparam name="TKey"></typeparam>
/// <returns></returns>
[UnityEngine.Scripting.Preserve]
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
var identifiedKeys = new HashSet<TKey>();
foreach (var item in source)
{
if (identifiedKeys.Add(keySelector(item)))
{
yield return item;
}
}
}
}
}