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;
}
}
}