问题标签 [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 投票
8 回答
16895 浏览

c# - 如何使 IEnumerable只读?

为什么列表list1Instance和下面代码pMain方法指向同一个集合?

我们可以在不改变返回类型的情况下改变这种行为List1.Get()吗?

谢谢

0 投票
4 回答
67546 浏览

c# - C# List<> GroupBy 2 个值

我在 Framework 3.5 上使用 C#。我希望通过两个属性快速分组一个通用列表<>。为了这个例子,假设我有一个带有 CustomerId、ProductId 和 ProductCount 属性的 Order 类型的列表。如何使用 lambda 表达式获得按 CustomerId 和 ProductId 分组的 ProductCounts 的总和?

0 投票
3 回答
541 浏览

c# - 如何使用 IEnumerable 接口,同时让 XMLSerializer 不使用 GetEnumerator()?

我有一个类可以解析非常大的文件(无法放入内存),我目前正在使用 IEnumerable 接口来使用 foreach,因此我可以轻松地逐行获取文件的解析内容。目前,我正在尝试使用 XMLSerializer 将其写入文件。它坚持枚举类,在我的例子中,这意味着将大的、已解析的文件内容转储到 XML。无论如何(hackish 或优雅)使用这个接口并且仍然从 XMLSerializer 中获得“预期”的功能?

(我只称其为“预期的”,因为如果我实现一些集合接口而不是 IEnumerable,这似乎是预期的结果。也许我的 IEnumerable 和集合的概念完全不合时宜。:()

0 投票
2 回答
54088 浏览

collections - 实体集合的 IList 与 IEnumerable

当我的域中有包含事物列表的实体时,它们应该公开为 ILists 还是 IEnumerables?例如 Order 有一堆 OrderLines。

0 投票
11 回答
17593 浏览

c# - IEnumerable作为返回类型

IEnumerable<T>用作返回类型有问题吗?FxCop 抱怨返回List<T>(它建议返回Collection<T>)。

好吧,我一直遵循“接受最少,但返回最多”的规则。

从这个角度来看,返回IEnumerable<T>是一件坏事,但是当我想使用“懒惰检索”时应该怎么做呢?此外,yield关键字是如此的好。

0 投票
10 回答
2006 浏览

c# - 产生关键字附加值?

仍然试图找到在实际情况下我会在哪里使用“yield”关键字。

我看到这个主题的主题

C# 中使用的 yield 关键字是什么?

但在接受的答案中,他们以此为例,有人在 Integers() 周围进行迭代

但为什么不直接使用

而是在这里。似乎更直接..

0 投票
4 回答
2122 浏览

c# - 为什么我的 IEnumerable使用 yield return 较慢地迭代然后 List

我一直在yield return用我写的一些代码来测试这个语句。我有两种方法:

然后我foreach在每个集合上使用一个循环:

有趣的是,出于某种原因,我似乎能够比MyListCollectionMyYieldCollection 更快地循环并打印出完整的内容。

结果:

  • MyYieldCollection -> 2062
  • 我的列表集合-> 1847

我真的看不出这是什么原因,是我遗漏了什么还是这正常?

0 投票
2 回答
504 浏览

c# - 为什么 foreach 语句接受实现“集合”模式的对象,而不是只接受实现 IEnumerable 的对象?

很多人问我为什么,我没有很好的答案。

显然有一个很好的理由。有人知道吗?

我在这里搜索并找到了这个问题。它解释了它是如何工作的,但没有解释为什么。

0 投票
7 回答
24381 浏览

.net - 如何在循环中从 Enumerable 集合中删除对象

复制

在迭代时修改集合


有没有人有一个很好的模式可以让我在循环遍历可枚举集合(例如,字典中的 IList 或 KeyValuePairs)时解决无法删除对象的问题

例如,以下失败,因为它修改了在 foreach 期间枚举的列表

过去我使用了两种方法。

我已将 foreach 替换为反向 for 循环(以免在删除对象时更改我正在循环的任何索引)。

我还尝试存储一个新的对象集合以在循环中删除,然后遍历该集合并从原始集合中删除对象。

这些工作正常,但都感觉不好,我想知道是否有人想出了一个更优雅的解决方案

0 投票
4 回答
7007 浏览

c# - 为什么 Enumerable.Range 比直接 yield 循环快?

下面的代码正在检查执行相同解决方案的三种不同方法的性能。

结果是:

“for 循环”比其他两个解决方案更快并不奇怪,因为 Enumerable.Aggregate 需要更多的方法调用。然而,让我感到惊讶的是,“Enumerable.Range”比“自制的 IEnumerable”要快。我认为 Enumerable.Range 会比简单的 GetIntRange 方法有更多的开销。

可能的原因是什么?