繁体   English   中英

C# TakeLast Extension for .Net Framework 4.6 及更新版本

[英]C# TakeLast Extension for .Net Framework 4.6 and newer versions

我正在寻求帮助,找到有人编写的 TakeLast 的扩展方法,该方法适用于 .Net Framework 的旧版本,如 4.6 及更高版本。 默认的 TakeLast 方法仅适用于我的 .Net 5 和 .Net 6 项目,但我试图让我的程序在.Net Framework 上运行,我唯一不知道的是如何解决缺乏 TakeLast

您可以实现自己的扩展方法,如下所示:

public static partial class EnumearbleExtensions {
  public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int count) {
    if (null == source)
      throw new ArgumentNullException(nameof(source));
    if (count < 0)
      throw new ArgumentOutOfRangeException(nameof(count));

    if (0 == count)
      yield break;

    Queue<T> result = new Queue<T>();

    foreach (T item in source) {
      if (result.Count == count)
        result.Dequeue();

      result.Enqueue(item);
    }

    return result;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM