问题标签 [addrange]

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 投票
13 回答
121747 浏览

c# - ObservableCollection 不支持 AddRange 方法,所以我会收到添加的每个项目的通知,除了 INotifyCollectionChanging 呢?

我希望能够添加一个范围并为整个批量更新。

我还希望能够在操作完成之前取消操作(即除了“更改”之外的集合更改)。


相关 Q 哪个 .Net 集合可以一次添加多个对象并获得通知?

0 投票
2 回答
2145 浏览

c# - 为什么我不能使用 AddRange 添加子类项?

我有两个类.... Parcel 和 FundParcel ...我正在尝试将子类型的 IEnumerable 转换为超类型的 IList ....

这些在另一个类中的方法中使用如下:

我不明白的是为什么不能将 foreach 语句简化为:

我基本上得到一个错误,上面写着“参数类型'System.Colection.Generic.IEnumerable<FundParcel>' is not assignable to parameter type 'System.Collections.Generic.IEnumerable<Parcel>'"

但如果是这样的话,那么我不明白为什么 parcels.Add 有效......

我觉得整个方法应该可以用以下行替换:

...或者也许该方法可以一起废弃,因为子类型应该可以替代它们的超类型..

谁能解释在这种情况下与 AddRange 的关系以及为什么在这种情况下可能需要 for 循环?

0 投票
1 回答
8042 浏览

c# - 使用 win 表单组合框 Items.AddRange 方法

我有一个对象数组,我正在尝试使用 AddRange 方法将它们添加到组合框控件的 Items 集合中。该方法需要一个object[]但是当我将已经用一些值初始化的数组的名称传递给它时,它会抱怨:

匹配的最佳重载方法System.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[])有一些无效参数。

在我的数组中定义对象的类非常简单:

这是我尝试调用的地方AddRange

这就是它抱怨的那条线-我是否缺少一些步骤才能做到这一点?当我只是添加一个简单的string[]

0 投票
3 回答
551 浏览

c# - LINQ - 在 linq 查询中加入列表

问题是如何在不使用下面的代码类型的情况下返回所有父母的孩子中的所有实体的 B 列表,我在想你必须能够在单个 linq 查询中实现相同的目标?

谢谢。

0 投票
5 回答
11735 浏览

c# - 无法在 C# 中将一个列表附加到另一个列表...尝试使用 AddRange

嗨,我正在尝试将 1 个列表附加到另一个列表。我以前使用AddRange()过它,但它似乎在这里不起作用......这是代码:

我进行了调试以检查结果,这就是我得到的结果:resultCollection计数为 4resultCollection2计数为 6,添加范围后,resultCollection计数仍然只有 4,而应该计数为 10。

谁能看到我做错了什么?任何帮助表示赞赏。

谢谢,
马特

0 投票
3 回答
9906 浏览

c# - 列表.AddRange 实现次优

分析我的 C# 应用程序表明大量时间花费在List<T>.AddRange. 使用 Reflector 查看此方法中的代码表明它调用了它,List<T>.InsertRange它是这样实现的:

有人可能会争辩说,接口的简单性(只有一个 InsertRange 重载)证明了运行时类型检查和强制转换的性能开销是合理的。但是我指出的 3 行背后的原因可能是什么(*)?我认为它可以重写为更快的替代方案:

您是否有理由不使用这种更简单且明显更快的替代方案?

编辑:

感谢您的回答。因此,共识意见是,这是针对以有缺陷/恶意方式实施 CopyTo 的输入集合的保护措施。对我来说,不断付出代价似乎有点过头了 1) 运行时类型检查 2) 临时数组的动态分配 3) 复制操作加倍,而所有这些都可以通过定义 2 个或更多的 InsertRange 重载来保存,一个IEnumerable像现在一样,第二个得到一个List<T>,第三个得到T[]。后两者的运行速度可能是当前情况的两倍。

编辑2:

我确实实现了一个类 FastList,与 List 相同,只是它还提供了一个 AddRange 的重载,它接受一个 T[] 参数。这种重载不需要动态类型验证和元素的双重复制。我确实通过将 4 字节数组添加到最初为 emtpy 的列表中 1000 次来针对 List.AddRange 分析此 FastList.AddRange。我的实现比标准 List.AddRange 的速度快了 9 倍(九倍!)。在我们应用程序的一个重要使用场景中,List.AddRange 占用了大约 5% 的运行时间,将 List 替换为提供更快 AddRange 的类可以将应用程序运行时间提高 4%。

0 投票
4 回答
9547 浏览

c# - 如何在 WPF C# 中使用组合框 AddRange

我有一个小问题,我有一个数组,我想在组合框中添加它,所以我想使用 AddRange 方法,但它在 WPF 中不可用,有没有办法可以在组合框中做到这一点?

谢谢。

0 投票
4 回答
6124 浏览

c# - c# Linq`List.AddRange` 方法不起作用

我有一个定义如下的接口:

还有两个实现该接口的 Linq-to-SQL 类:

我有 IEnumerable 列表 a 和 b 由 tblTestA 和 tblTestB 的数据库记录填充

但是,以下情况是不允许的:

我必须这样做:

有什么我做错了吗?谢谢你的帮助

0 投票
2 回答
2498 浏览

c# - lambda Select 表达式中的 AddRange/concat 功能

如何获取内部引用的所有项目 ID 的列表fooList

0 投票
1 回答
1185 浏览

c# - C# - 图表 - 将范围添加到系列

使用 Microsoft 的 Charting 控件,是否可以一次添加一系列点而无需遍历我要添加的列表?我有一个列表,我需要将整个列表添加为图表控件中我的系列的 Y 值,并且只需使用“foreach”语句和

似乎它的效率比必要的低。我一直试图在谷歌上找到这个问题的答案,但老实说,我没有太多运气找到“好的”图表示例(除了微软自己提供的那些)。

谢谢阅读!