问题标签 [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.

0 投票
1 回答
2201 浏览

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/表达式树、谓词、匿名代表等其他人认为显而易见的关键方面,请提前道歉。

0 投票
4 回答
327 浏览

c# - 使用 IOrderedEnumerable 和 Where 的 Linq 有多智能

所以假设我有一个 IEnumerable 日期,我想获得一个范围内的日期。

鉴于日期现在已排序,Linq 和 IOrderedEnumerable 是否足够智能以实现选择更快算法的能力。

所以考虑一下:

如果这个实现不聪明,是否有其他实现可以让它变得聪明?

0 投票
3 回答
649 浏览

c# - 我可以在 IOrderedEnumerable 列表中添加 where 子句吗?

我有一个数组列表。每个数组由一个分数和一个难度组成。从文本文件中读取。

这就是我获取数据并按分数降序排列的方式。

是否可以将 a 子句添加到 theIOrderedEnumerable中,以便在难度所在的位置按分数降序排列1

0 投票
1 回答
2196 浏览

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?

0 投票
2 回答
270 浏览

c# - IOrderedEnumerable 到 vb.net IOrderedEnumerable 的转换

c#在将项目转换为vb.net.

我知道c#它是这样的

但是一旦转换成vb.net它,它就会尝试用最少的声明在一行上声明所有内容。

虽然c#你也可以逃脱 c#

vb.net 尝试在自身内部声明 for 语句:

0 投票
3 回答
88 浏览

c# - 为什么这是无效的 LINQ 演员表?

我将原始数据放入一个通用列表中。然后,我将根据该原始数据计算的数据放入另一个通用列表中,这个列表:

数据(原始数据和计算数据)需要按总购买量排序显示,所以我希望数据以这种方式排序。由于订购一个通用列表会返回另一个通用列表,我首先尝试将排序后的数据重新分配到原始通用列表中:

......但我所走的道路显然是用善意铺成的,因为这个密码炸弹在我脸上爆炸:

在此处输入图像描述

我尝试将 vals 放入相同类型的单独通用列表中:

......但结果惊人地相似。

我需要做什么才能对通用列表进行排序?

0 投票
3 回答
646 浏览

c# - 为什么 IOrderedEnumerable 不重新实现 .Contains() 以获得性能

如果你去这里:IOrderedEnumerableDocs并单击 .Contains() 方法,那么它会带你到这里:通用 Enumerable.Contains() 文档

我认为这意味着它只是使用底层的 IEnumerable 实现?

鉴于您知道您有一个可以与您的元素进行比较的排序列表(例如,进行二分搜索以确认该元素是否存在,而不是枚举整个集合?

我错过了什么吗?

0 投票
0 回答
823 浏览

c# - 如何在 O(1) 中简单地将 IEnumerable 转换为 IOrderedEnumerable?

有没有办法在 O(1) 中简单地将 IEnumerable 转换为 IOrderedEnumerable?
我似乎这个问题与我的很接近,但还没有找到我要找的东西。简单地说,我的意思是避免仅仅为了这个铸造目的而创建一个新类,就像在我提到的问题中的 Servy 解决方案中所做的那样。

这是我为什么需要这样的东西的场景。

注意:一切都是 linq to object,在这种情况下没有任何东西连接到数据库。

0 投票
4 回答
628 浏览

c# - OrderBy Linq 的奇怪行为

我有一个使用OrderBy()Linq 函数排序的列表,它返回一个IOrderedEnumerable.

ParamName 是一个可以保存整数和字符串的对象。上面的 orderBy 根据整数值对列表进行排序。现在我在 testList 上操作 foreach 并根据其整数值将 ParamName 属性更改为某个字符串,如下所示,

接下来发生的事情是,在前一个循环之后列表中的项目顺序已被打乱,并且列表已根据分配的字符串而不是初始顺序进行排序。

但是,当我.ToList()与该.OrderBy()子句一起使用时,顺序会被保留。

谁能帮我这里发生了什么?

示例输出说明:

在此处输入图像描述

0 投票
1 回答
124 浏览

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 事件):