首页 / 知识
关于C#:排序组合集合
2023-04-12 05:23:00

Sorting a composite collection因此WPF不支持CompositeCollections视图的标准排序或筛选行为,因此解决此问题的最佳做法是。 有两个或多个不同类型的对象集合。您希望将它们组合成一个可排序和可过滤的集合(不必手动实现排序或过滤器)。 我考虑过的一种方法是创建一个仅包含几个核心属性的新对象集合,包括我希望对集合进行排序的那些属性以及每种类型的对象实例。
然后遍历我的两个对象集合以构建新的复合集合。显然,这有点蛮力,但是可以用。我将在新的复合对象集合上获得所有默认的视图排序和过滤行为,并且能够在其上放置一个数据模板,以根据该复合项目中实际存储的类型正确显示我的列表项。 对于以更优雅的方式执行此操作有什么建议? 更新:我发现了一个更优雅的解决方案:
我发现由于反射,存储在Obj1中的特定类型在运行时被解析,并且特定类型的DataTemplate可以按预期应用! 我对WPF不太熟悉,但是我认为这是有关对
您会重新考虑实现自己的排序或过滤器功能吗?根据我的经验,它很容易使用。下面的示例使用匿名委托,但是您可以轻松定义自己的方法或类来实现复杂的排序或过滤器。这样的类甚至可以具有用于动态配置和更改排序和过滤器的属性。 将
一种类似的方法,用于从列表中获取项目的子集合。 将
您提到的 "蛮力"方法实际上是理想的解决方案。请注意,所有对象都在RAM中,没有I / O瓶颈,因此您可以在不到一秒钟的时间内在任何现代计算机上进行数百万个对象的排序和筛选。 使用集合的最优雅的方法是.NET 3.5中的System.Linq命名空间。
如果您目前无法预测人们将如何对对象集合进行排序和筛选,则应查看System.Linq.Expressions命名空间,以在运行时按需构建Lambda表达式(首先让用户构建表达式,然后进行编译,运行,最后使用反射名称空间来枚举结果。将头缠绕在它上面是比较棘手的,但是它是非常宝贵的功能,可能(对我而言是绝对的)比LINQ本身更具突破性的功能。 |
最新内容
相关内容
pythonsort()怎么排序
pythonsort()怎么排序,数据,培训,方法,参数,元素,类型,结果,下面,数组,字典,python中的sort()函数只能应用在列表list上,而sorted可以对所有可python空集合如何表示
python空集合如何表示,数据,培训,表示,函数,类型,嵌套,赋值,括号,序列,字典,python中,用set来表示一个无序不重复元素的序列。set的主要作用就python如何确定是否为可迭代对象
python如何确定是否为可迭代对象,培训,元素,索引,对象,整数,字典,函数,类型,下标,模块,迭代可以理解为,任意的集合使用for循环遍历python中,迭python怎么判断某一对象是否为字典
python怎么判断某一对象是否为字典,培训,名称,代码,情况,类型,实例,元素,字典,函数,对象,我们经常需要在Python代码中确定某个实例是什么类型python如何查看对象属性
python如何查看对象属性,培训,网络,系统,函数,对象,属性,变量,示例,实例,模块,在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要python字符串是对象吗
python字符串是对象吗,培训,名称,设计,对象,函数,变量,实体,参数,物件,字符串,python中一切都是对象在python中下列语句其实都是一个共同点:i=python如何判断对象是否有某个属性
python如何判断对象是否有某个属性,培训,名称,异常,对象,属性,特性,参数,方法,函数,定义,python如何判断某一对象是否有某一属性,可以使用hasapython能判断对象的类型吗
python能判断对象的类型吗,培训,对象,类型,函数,实例,变量,语法,以上,参数,不是,判断python中的对象类型,可以使用isinstance()函数。isinstanpython如何实现对Python中列表的排
python如何实现对Python中列表的排序?,培训,工作,实例,方法,关键字,对象,函数,以上,列表,表达式,对List进行排序,Python提供了两个方法方法1.python什么是面向对象
python什么是面向对象,概念,软件,设计,培训,数据,分析,状态,系统,统一,对象,python的面向对象的思维解决问题的重点当遇到一个需求的时候不用python整型对象是如何在内存中存储
python整型对象是如何在内存中存储的?,代码,培训,地址,位置,内存,开辟,整数,分配,存在,负数,在Python中整型对象所存储的位置是不同的,有一些python如何理解Python中整型对象存
python如何理解Python中整型对象存储的位置?,位置,地址,代码,培训,内存,开辟,对象,整数,分配,存在,在Python整型对象所存储的位置是不同的,有