问题标签 [ienumerable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
9160 浏览

c# - 如何将两个 IEnumerable 合并(或压缩)在一起?

我有一个IEnumerable<T>和一个IEnumerable<U>我想合并到一个IEnumerable<KeyValuePair<T,U>>KeyValuePair 中连接在一起的元素的索引相同的地方。请注意,我没有使用 IList,因此我没有要合并的项目的计数或索引。我怎样才能最好地做到这一点?我更喜欢 LINQ 的答案,但是任何以优雅的方式完成工作的东西都可以。

0 投票
5 回答
13618 浏览

.net - 确定是否为 IEnumerable包含另一个 IEnumerable 的任何对象

我有2个IEnumerable<int>

确定 x 中是否存在 y 中的任何 int 的最佳方法是什么?
目前我正在使用:

单独循环和测试每个程序会明显更快吗?

这些列表相对较轻,x 中不超过 50 个整数,y 中不超过 4 个,如果这在考虑中很重要的话。

0 投票
1 回答
516 浏览

c# - 对可能无限列表的 LINQ 查询

我目前正在做一些 Project Euler 问题,早期的问题通常涉及斐波那契数或素数等问题。对它们进行迭代似乎很适合 LINQ,至少在代码的可读性和感知“优雅”方面(我试图在可能和适用的情况下使用特定于语言的特性来感受这些语言)。

我现在的问题是,如果我只需要一组达到一定限制的数字,我应该如何最好地表达这一点?目前我已经在迭代器中对各自的限制进行了硬编码,但我真的希望枚举器返回列表,直到外部的东西决定不再查询它,因为它超过了一定的限制。所以基本上我有一个潜在的无限迭代器,但我只从中获取一组有限的数字。我知道这样的事情在函数式语言中是微不足道的,但我想知道 C# 是否也允许这样做。我唯一的另一个想法是有一个迭代器 Primes(long) ,它返回素数达到一定限制,对于其他序列也是如此。

有任何想法吗?

0 投票
3 回答
157 浏览

c# - 在 C# 接口中遇到问题

我试图理解这个 -why- ......当我使用 IInterface 语法时,我真的很难理解我告诉编译器做什么的概念。任何人都可以用“这是怎么回事”的方式来解释它吗?

无论如何......我的主要问题是......

和有什么区别

你为什么要使用一个而不是另一个?

0 投票
2 回答
4921 浏览

.net - IEqualityComparer.Equals 与 IEnumerable.Contains 一起使用时,x 或 y 是列表中的值吗?

IEnumberable 有一个扩展方法 Contains<T>,它接受两个参数。第一个参数是要检查的值,第二个参数是 IEqualityComparer 的实现。查看 IEqualityComparer.Equals 它需要两个名为 x 和 y 的参数,用于比较第一个和第二个对象。

我的问题是 IEnumerable 的值是 X 还是 Y?

例子

当它为第一个值调用 Equals 方法时,它将是 Equals("a","d") 还是 Equals("d","a")?

0 投票
6 回答
1495 浏览

c# - Enumerable.Intersperse 的扩展方法?

我从 Haskell 中学习了intersperse 函数,并一直在寻找 c# 中的实现。

Intersperse 采用 2 个参数,一个 IEnumerable<T> 源和一个 T 元素。它返回一个 IEnumerable,其中元素插入源的每个元素之间。

一种可能的用例是将任意整数放在整数列表之间,例如:

这是 string.Join(...) 的一般情况。

0 投票
5 回答
7299 浏览

c# - 使用 Linq 将 DataTable 分解为固定大小的块的干净方法是什么?

更新:这是一个类似的问题


假设我有一个里面DataTable有几千个DataRows

我想将表分解成小行进行处理。

我认为 C#3 改进的数据处理能力可能会有所帮助。

这是我到目前为止的骨架:

关于应该替换什么的任何建议ChunkifyTableIntoSmallerChunksSomehow

我真的很感兴趣有人会如何通过访问 C#3 工具来做到这一点。如果试图应用这些工具是不合适的,请解释!


更新 3(修改了分块,因为我真的想要表,而不是 ienumerables;使用扩展方法——感谢 Jacob):

最终实现:

处理分块的扩展方法:

该扩展方法的示例使用者,带有来自临时测试的示例输出:

0 投票
3 回答
755 浏览

c# - 打破一个 IEnumerable使用 Enumerable.Range 的查询

我有以下 IEnumerable LINQ 查询:

它找到所有可以写为数字的五次方之和的数字的总和。这是欧拉计划问题 30

它可以正常工作。我知道这是挑剔的,但范围让我很恼火。我基本上已经猜到它在 1,000,000 处找到了正确的结果,所以我让它停在那里。在这种情况下,数量就足够了。

但它只是一个硬编码的“随机”数字。如果您查看代码,您会发现只要 wherep == sumofPowers.Sum()为真,您就不需要再运行循环了。

我知道yield在其他情况下可以做到这一点并break在正常循环中工作 - 那么在这种情况下你可以做些什么吗?

0 投票
10 回答
29245 浏览

c# - 为什么 .ForEach() 在 IList而不是 IEnumerable?

可能重复:
为什么 IEnumerable 接口上没有 ForEach 扩展方法?

我在编写 LINQ-y 代码时注意到这.ForEach()是一个很好的习惯用法。例如,这是一段代码,它接受以下输入,并产生这些输出:

和代码:

注意倒数第二行.ToList()之前的插入。.ForEach()

为什么它.ForEach()不能作为扩展方法使用IEnumerable<T>?像这样的例子,它看起来很奇怪。

0 投票
8 回答
6695 浏览

c# - 为什么不能克隆 IEnumerator?

在用 C# 实现一个基本的 Scheme 解释器时,令我惊恐的是,我发现了以下问题:

IEnumerator 没有克隆方法!(或者更准确地说,IEnumerable 无法为我提供“可克隆”枚举器)。

我想要什么:

我无法想出一个 IEnumerable 的实现,它无法提供一个有效的可克隆 IEnumerator(向量、链表等),所有这些都能够提供一个简单的 IEnumerator 的 Clone() 实现,如上所述......它会无论如何都比提供 Reset() 方法更容易!)。

没有 Clone 方法意味着枚举序列的任何功能/递归习惯用法都不起作用。

这也意味着我不能“无缝”使 IEnumerable 的行为像 Lisp“列表”(您使用 car/cdr 递归枚举)。即“(cdr some IEnumerable)”的唯一实现将非常低效。

任何人都可以提出一个现实、有用的 IEnumerable 对象示例,该对象无法提供有效的“Clone()”方法吗?“产量”结构是否存在问题?

任何人都可以提出解决方法吗?