Tag: 集合

什么是在.net 2中生成唯一集的最快方法

我有一个基本上是锯齿状的名称值对数组 – 我需要从中生成一组唯一的名称值。 锯齿状arrays约为86,000 x 11值。 对我来说,以什么方式存储名称值对(单个字符串“name = value”或专门的类,例如KeyValuePair)并不重要。 附加信息:有40个不同的名称和更多的不同值 – 可能在10,000个值的区域内。 我正在使用C#和.NET 2.0(并且性能非常差)我认为将整个锯齿状数组推送到sql数据库并从那里做一个不同的选择可能会更好。 以下是我使用的当前代码: List<List<KeyValuePair>> vehicleList = retriever.GetVehicles(); this.statsLabel.Text = “Unique Vehicles: ” + vehicleList.Count; Dictionary<KeyValuePair, int> uniqueProperties = new Dictionary<KeyValuePair, int>(); foreach (List<KeyValuePair> vehicle in vehicleList) { foreach (KeyValuePair property in vehicle) { if (!uniqueProperties.ContainsKey(property)) { uniqueProperties.Add(property, 0); } } } this.statsLabel.Text += […]

C#无法从IEnumerable 转换为IEnumerable

我最近在尝试将AddRange(IEnumerable)添加到List时遇到了麻烦。 可能是一个经典问题,但我还没有真正得到它。 我知道期望List参数的方法不满足List,因为他们可能会尝试向List添加Base,这显然是不可能的。 但是,如果我得到正确的,因为IEnumerables本身不能改变,它应该在这种情况下工作。 我想到的代码看起来像这样: class Foo { } class Bar : Foo { } class FooCol { private List m_Foos = new List (); public void AddRange1(IEnumerable foos) { m_Foos.AddRange (foos); // does work } public void AddRange2(IEnumerable foos) where T : Foo { m_Foos.AddRange (foos); // does not work } } class Program […]

为什么ICollection 同时实现IEnumerable 和IEnumerable

为什么ICollection实现IEnumerable和IEnumerable ? 这样做的目的是什么? IEnumerable如何使ICollection受益?

ICollection 。包含自定义类型

如果我有一个(引用 – 它有关系吗?)类型MyType ,它不会覆盖Equals方法,在确定ICollection 是否包含给定的类型实例时将使用什么启发式? 使用我自己的启发式方法的最佳方法是什么(例如,检查Id属性值是否相等)?

调用Clear是否也处理了这些项目?

很多时候有一个明确的方法,从集合中删除所有项目,这些项目也被处置。 喜欢, toolStripMenuItem.DropDownItems.Clear(); 是足够的,或者我应该这样打电话: foreach (ToolStripItem item in toolStripMenuItem.DropDownItems) { toolStripMenuItem.DropDownItems.Remove(item); item.Dispose(); } 编辑:好吧ToolStripItem是一个不是问题的例子,对于那些说Clear已经足够的人我发现了另一个例子,TabControl也有项目集合和清除方法。 但TabControls可以有复杂的控件(至少我有),需要显式Dispose(即使它们在某些时候由GC自动处理,导致它们占用大量内存)。 我想最好的答案是divo评论处理项目,然后打电话给清楚。

至少有一个DataGridView控件的列没有单元格模板

我得到了那个例外。 System.InvalidOperationException was unhandled Message=At least one of the DataGridView control’s columns has no cell template. Source=System.Windows.Forms StackTrace: at System.Windows.Forms.DataGridView.CompleteCellsCollection(DataGridViewRow dataGridViewRow) at System.Windows.Forms.DataGridView.get_RowTemplateClone() at System.Windows.Forms.DataGridView.RefreshRows(Boolean scrollIntoView) at System.Windows.Forms.DataGridView.RefreshColumnsAndRows() at System.Windows.Forms.DataGridView.OnBindingContextChanged(EventArgs e) at System.Windows.Forms.Control.OnParentBindingContextChanged(EventArgs e) at System.Windows.Forms.Control.OnBindingContextChanged(EventArgs e) at System.Windows.Forms.Control.set_BindingContextInternal(BindingContext value) at System.Windows.Forms.ContainerControl.set_BindingContext(BindingContext value) at System.Windows.Forms.ContainerControl.get_BindingContext() at System.Windows.Forms.Control.get_BindingContextInternal() at System.Windows.Forms.Control.get_BindingContext() at System.Windows.Forms.DataGridView.DataGridViewDataConnection.SetDataConnection(Object dataSource, String dataMember) at […]

对于C#中的alist,是否存在类似于Addrange()的AddUnique方法

我在C#中有一个列表: var list = new List(); list.AddRange(GetGreenCars()); list.AddRange(GetBigCars()); list.AddRange(GetSmallCars()); 问题是一些相同的汽车在不同的function中返回,我不希望它们在列表中不止一次。 每辆车都有一个唯一的Name属性。 无论如何我可以在上面有这样的东西,但只会添加项目,如果它们是独一无二的?

IEnumerable vs T

我只是意识到,在将T[]暴露给我的视图时,我可能总是错了,而不是IEnumerable 。 通常,对于这种代码: foreach (var item in items) {} item应该是T[]还是IEnumerable ? 如果我需要得到项目的计数,那么Array.Count会比IEnumerable.Count()更快吗?

在C#中存储重复的键值对

我有像(string,int)对的数据。 如何将此数据存储在集合对象中。 两个值都可以重复。 我应该使用哪个集合对象? 编辑:我如何单独访问元素.. ??

如何使用该值从字典中删除条目

我有一个词典集合作为bleow: mydic.addvalue(key1, val1) mydic.addvalue(key2, val1) mydic.addvalue(key3, val1) mydic.addvalue(key4, val2) mydic.addvalue(key5, val2) 从上面的字典我想删除value ==“val1”的所有条目,以便结果只有以下条目: mydic.addvalue(key4, val2) mydic.addvalue(key5, val2) 我的VB源代码在VS2008上,目标是3.5