Linq は非常に強力ですが、拡張機能を作成することを急ぐことがあり、後でネイティブ メソッドでそれを行うことができるかどうか疑問に思うことがあります。
では、拡張機能を使用せずに以下を実装することは可能ですか?
/// <summary>
/// Removes duplicates that are immediately clustered together.
/// </summary>
public static IEnumerable<TData> DistinctLocal<TData>(this IEnumerable<TData> enumerable)
{
bool yielded = false;
TData last = default(TData);
foreach (var item in enumerable)
{
if (yielded == false || last.Equals(item) == false)
{
last = item;
yielded = true;
yield return item;
}
}
}