作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定来源 IEnumerable<T>
和一个正整数偏移量和一个合并函数Func<T,T,TResult>
我想制作一个新的 IEnumerable<TResult>
可能的签名如下:
public static IEnumerable<TResult> Offset<T, TResult>(
this IEnumerable<T> source, int offset, Func<T,T,TResult> selector
);
这是一个使用以下输入的示例,它将生成可枚举的偏移量并选择偏移部分的总和。
typeof(T) = typeof(int);
typeof(TResult) = typeof(int);
source = Enumerable.Range(0, 10);
offset = 1;
selector = (original, offsetValue) => original + offsetValue;
result = source.Offset(offset, selector);
expected = new int[]{1,3,5,7,9,11,13,15,17};
Assert.IsTrue(expected.SequenceEquals(result));
这里一个很重要的目标是枚举来源IEnumerable<T>
只有一次。
最佳答案
您需要跟踪以前的 offset
项目。 Queue
可能是执行此操作的最有效工具。如果所述队列中有足够的项目,将当前项目与出队项目配对并产生它。
public static IEnumerable<TResult> Offset<T, TResult>(
this IEnumerable<T> source, int offset, Func<T, T, TResult> selector)
{
var queue = new Queue<T>(offset);
foreach (var item in source)
{
if (queue.Count >= offset)
yield return selector(queue.Dequeue(), item);
queue.Enqueue(item);
}
}
关于c# - 用自身抵消可枚举的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24659167/
我正在 iFrame 中加载外部页面,该页面在计数器后重定向。我想禁用重定向。我使用 Firebug 来定位重定向。 if(!counter) self.iframe.src=self.vars[
我正在运行一个 MySQL 查询,以获取按每个字段分组的每一行的最高 ID。我这样做: SELECT period,max(id) AS maxid FROM f WHERE type = '1' G
我在网站上使用 Bootstrap ,并在加载时使用以下代码将我的选择框变成 select2下拉菜单 $("select").select2(); 但是,当加载带有选择下拉列表的任何页面时,在绘制 s
我是一名优秀的程序员,十分优秀!