问题标签 [iorderedenumerable]
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.
c# - 如何从基于 OrderBy“属性”的集合中返回 IOrderedEnumerable
我希望能够使用类似于以下的语法...
有数千个示例说明如何将排序、过滤等结果放入新的列表、集合、ObservableCollection 等,但如果您现有的集合已经响应事件,则自动添加新对象以响应通知、用户操作、新数据从服务器等进来,然后所有这些功能要么“丢失”,要么必须“添加”以使新的 List、Collection、ObservableCollection 等监听原始集合,以便以某种方式与所有的保持同步原始集合已经知道和处理的各种更新、属性等......我希望能够让原始的“EmployeeCollection”简单地在请求的 SortOrder 中分发“Employee”对象......
我对“SortOrder”属性的语法做了一个“疯狂的猜测”,基于希望使 SortOrder 属性的语法类似于团队中其他开发人员习惯使用的 lambda 表达式的 orderby 部分。 System.Linq.Enumerable 中的扩展方法类似于以下内容:
public static IOrderedEnumerable<TSource> OrderBy<ToSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);
我是 Linq、lambda 等的新手,如果我不知何故错过了 Linq/表达式树、谓词、匿名代表等其他人认为显而易见的关键方面,请提前道歉。
c# - 使用 IOrderedEnumerable 和 Where 的 Linq 有多智能
所以假设我有一个 IEnumerable 日期,我想获得一个范围内的日期。
鉴于日期现在已排序,Linq 和 IOrderedEnumerable 是否足够智能以实现选择更快算法的能力。
所以考虑一下:
如果这个实现不聪明,是否有其他实现可以让它变得聪明?
c# - 我可以在 IOrderedEnumerable 列表中添加 where 子句吗?
我有一个数组列表。每个数组由一个分数和一个难度组成。从文本文件中读取。
这就是我获取数据并按分数降序排列的方式。
是否可以将 a 子句添加到 theIOrderedEnumerable
中,以便在难度所在的位置按分数降序排列1
?
c# - Removing an object from IOrderedEnumerable
I sorted a dictionary like this:
Then I selected an element as such:
Then I did some processing on that node and at the end wanted to remove the node from the list, without destroying the sorted order.
Would the below maintain the order?
c# - IOrderedEnumerable 到 vb.net IOrderedEnumerable 的转换
c#
在将项目转换为vb.net
.
我知道c#
它是这样的
但是一旦转换成vb.net
它,它就会尝试用最少的声明在一行上声明所有内容。
虽然c#
你也可以逃脱
c#
:
vb.net 尝试在自身内部声明 for 语句:
c# - 为什么 IOrderedEnumerable 不重新实现 .Contains() 以获得性能
如果你去这里:IOrderedEnumerableDocs并单击 .Contains() 方法,那么它会带你到这里:通用 Enumerable.Contains() 文档
我认为这意味着它只是使用底层的 IEnumerable 实现?
鉴于您知道您有一个可以与您的元素进行比较的排序列表(例如,进行二分搜索以确认该元素是否存在,而不是枚举整个集合?
我错过了什么吗?
c# - 如何在 O(1) 中简单地将 IEnumerable 转换为 IOrderedEnumerable?
有没有办法在 O(1) 中简单地将 IEnumerable 转换为 IOrderedEnumerable?
我似乎这个问题与我的很接近,但还没有找到我要找的东西。简单地说,我的意思是避免仅仅为了这个铸造目的而创建一个新类,就像在我提到的问题中的 Servy 解决方案中所做的那样。
这是我为什么需要这样的东西的场景。
注意:一切都是 linq to object,在这种情况下没有任何东西连接到数据库。
c# - 在 Observable Collection 上使用 LINQ 而不会丢失事件订阅 C#
我正在尝试使用 LINQ 对 ObservableCollection 进行排序,问题是 LINQ 的方法返回一个 IOrderedEnumerable 并且没有将该类型直接转换为 ObservableCollection 的方法。在搜索了一段时间后,我发现了一种方法,方法是使用 ObservableCollection 类中的构造函数来使用 IOrderedEnumerable 创建一个新的构造函数:
但是,这并不能解决我的问题,因为通过使用此构造函数,先前的 EventHandler 被删除,因此我丢失了对先前订阅 CollectionChanged 事件的所有方法的引用,并且无法再次订阅这些方法。
目前我正在做的是清除 Observable 集合,然后将 LINQ 方法返回的对象一一添加到 Observable 集合中,问题是每当我使用 LINQ 对其进行排序时,都会多次触发 CollectionChanged 事件:
主要问题是:如何在不丢失 CollectionChanged 事件订阅的情况下订购 Observable Collection?
我考虑过存储 EventHandler 并在创建新的排序后的 Observable Collection 后重新分配它,但还不能实现这一点。
Edit1:经过一段时间的修改,我想出了一个解决方案,用于只对集合进行排序的 LINQ 方法,而不是清除 Observable 集合,然后一个一个地添加,我只是设置了值(它不会触发 CollectionChanged 事件):