Tag: 集合

对复合集合进行排序

因此,WPF不支持CompositeCollections视图的标准排序或过滤行为,因此解决此问题的最佳做法是什么。 有两个或更多不同类型的对象集合。 您希望将它们组合成单个可排序和可过滤的集合(必须手动实现排序或过滤)。 我考虑过的方法之一是创建一个只有少数核心属性的新对象集合,包括我希望对集合进行排序的属性,以及每种类型的对象实例。 class MyCompositeObject { enum ObjectType; DateTime CreatedDate; string SomeAttribute; myObjectType1 Obj1; myObjectType2 Obj2; { class MyCompositeObjects : List { } 然后遍历我的两个对象集合来构建新的复合集合。 显然这是一种蛮力方法,但它会起作用。 我将获得新的复合对象集合上的所有默认视图排序和过滤行为,并且我可以在其上放置数据模板以根据实际存储在该复合项目中的类型正确显示列表项目。 有什么建议以更优雅的方式做到这一点?

ObservableCollection数据绑定性能

我想知道为什么根据这篇文章和可观察集合比WPF中的List 集合明显更快地绑定(20毫秒vs 1685毫秒,这比800倍快)。 我查看了ObservableCollection的内部,它使用List作为它的存储集合对象(我使用了反射器并在构造函数中看到了这个) public Collection() { this.items = new List(); } 那么这里发生了什么?

是否有.NET集合接口阻止添加对象?

我有一个维护另一个类的对象列表的类。 对象列表是公共属性。 我想阻止用户直接添加和删除对象列表,如下所示: MyObject.MyListProperty.Add(object); 相反,我希望他们使用将在内部进行一些处理然后将对象添加到列表的方法。 我有一些想法: 创建List后代并覆盖添加和删除 通过属性getter返回列表的新副本(列表相对较短,不超过30个对象) 是否有一些没有添加和删除的集合界面? 编辑: 我将使用ReadOnlyCollection 。 原因是可以更新包装集合,并且只读对象中的更改将立即可见(请参阅ReadOnlyCollection和AsReadOnly() MSDN代码示例)。 这允许只读一次创建只读列表。 IEnumerable的问题是对象可以被转换回原始List然后直接操作。

可观察的集合属性已更改为集合中的项目

我有一个ObservableCollection 。 我已将它绑定到ListBox控件,我已将SortDescriptions到ListBox上的Items集合中,以使列表按我的方式排序。 当在子元素上更改任何属性时,我想在任何时候使用列表。 我的所有子元素都实现了INotifyPropertyChanged 。

C#Xml序列化,集合和根元素

我的应用程序序列化流中的对象。 以下是我需要的样本: 在这种情况下,对象是“链接”对象的集合。 ———–第一版 起初我使用了DataContractSerializer ,但是你无法将成员序列化为属性( 源代码 ) 这是对象: [DataContract(Name=”link”)] public class LinkV1 { [DataMember(Name=”href”)] public string Url { get; set; } [DataMember(Name=”rel”)] public string Relationship { get; set; } } 这是结果: /users users /features features ———–第二版 好吧,不要安静我想要的东西,所以我尝试了经典的XmlSerializer ,但是……哦,不,如果根元素是一个集合,你不能指定根元素和集合元素的名称…… 这是代码: [XmlRoot(“link”)] public class LinkV2 { [XmlAttribute(“href”)] public string Url { get; set; } [XmlAttribute(“rel”)] public […]

我应该使用什么类型的collections?

我有大约10,000条记录。 每个记录有2个字段:一个字段是长度最多300个字符的字符串,另一个字段是十进制值。 这就像产品目录,其中包含产品名称和每种产品的价格。 我需要做的是允许用户键入任何单词并在列表框中显示包含该单词的所有产品及其价格。 就这样。 什么类型的收集最适合这种情况? 如果我需要根据产品名称或价格进行排序,那么选择是否仍然相同? 现在我正在使用XML文件,但我想使用一个集合,以便我可以在代码中嵌入所有值更简单。 谢谢你的建议。

如何使用HashSet 作为字典键?

我希望使用HashSet作为Dictionary的键: Dictionary<HashSet, TValue> myDictionary = new Dictionary<HashSet, TValue>(); 我想从字典中查找值,以便包含相同项的两个不同的HashSet实例将返回相同的值。 HashSet的Equals()和GetHashCode()实现似乎没有这样做(我认为它们只是默认值)。 我可以重写Equals()以使用SetEquals()但是GetHashCode()呢? 我觉得我在这里错过了一些东西……

OrderedDictionary的复杂性是什么?

没有人说OrderedDictionary有两个元素副本,一个在散列表中,另一个在列表中,我无法在MSDN上找到OrderedList的复杂度测量。 谢谢

IEnumerable .Reverse是如何工作的?

我正在检查reflection器中的代码,但我还没有发现它如何通过一个集合向后枚举? 由于没有计数信息,枚举总是从集合的“开始”开始,对吧? 它是.NET框架中的缺点吗? 成本是否高于常规枚举?

在C#中绑定到DataGridView时使用的好集合

将数据列表绑定到C#中的DataGridview时,最好的集合是什么? 我目前只使用通用列表,但是当列表中添加或删除对象时,数据网格不会更新。 我已经看过使用BindingList或ObservableCollection,但是无法确定最好使用哪个更新并且易于排序/过滤而无需重新绑定到数据网格。 我目前正在.Net 3.5框架上以windowsforms工作,计划很快转向WPF。