com.alicizax.unity/Runtime/Helper/DistinctHelper.cs

35 lines
975 B
C#
Raw Normal View History

2025-02-07 16:04:12 +08:00
using System;
using System.Collections.Generic;
2025-03-24 13:16:51 +08:00
namespace AlicizaX
2025-02-07 16:04:12 +08:00
{
/// <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;
}
}
}
}
}