问题标签 [icomparer]

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 投票
2 回答
615 浏览

c# - IComparer 应该返回什么来表示“保持现有的排序顺序”

我正在实现一个自定义比较器,以便为各种视图中的项目应用自定义排序顺序。

有时我发现我想保持现有的项目顺序,在这种情况下,我应该从我的Compare方法实现中返回什么?简单地返回 0 就足够了,还是我需要主动识别哪个项目先出现?

0 投票
1 回答
65 浏览

.net - 自定义 IComparer

我想创建一个IComparer<string>for a SortedDictionary<string, int>,它会按字母顺序对所有内容进行排序,但如果它看到“Other”键,它会将“Other”放在列表的末尾。

0 投票
2 回答
297 浏览

asp.net - arraylist 中所有不常见元素的列表

我有 2 个 ArrayList,其中包含文件名,现在一个列表有更多名称,而另一个列表可能有更少,或者有时相等,我想列出两个 ArrayList 中不常见的文件名并相应地更新数据库,我能够检查它们是否相等,但我无法列出哪个列表有额外的元素,哪些是它们。

这是我目前正在使用的代码。

但是这个列出了arraylist的所有元素,它有更多的元素,我只想要差分元素,这样我就可以只用这些元素更新数据库。

谁能告诉我如何获得比较 2 个数组列表的差异记录。

0 投票
2 回答
2769 浏览

c# - IComparer 问题

我有一个奇怪的问题,我没有线索来追踪原因。我会尽量清楚地描述我的问题。

我有一个 RTree 类,在这个类中,我想比较两个矩形(这里我称为信封,它包含 minX、minY、maxX、maxY),所以我们有一个比较器类如下:

使用这个比较器,我们可以维护一个信封的 ArrayList 并轻松对其进行排序,信封是随机添加的。当我们调用以下代码时,我们遇到了

无法排序,因为 IComparer.Compare() 方法返回不一致的结果。一个值与自身比较不相等,或者一个值与另一个值重复比较会产生不同的结果。

这是奇怪的部分。此错误仅发生在未安装 VisualStudio 的 .net 4.0 中。如果机器安装了 VS 或 .net 4.5,则此问题无法再次出现。

在这种情况下,我无法弄清楚它为什么会发生。如果您对调试此类问题有任何经验,那就太好了,我很感激。

谢谢,霍华德

0 投票
3 回答
17017 浏览

c# - 如何在 C# 中为接口实现 IComparer

我有一个名为IEmployee. 我需要实现 IComparer 来实现我的接口。

这是我的代码,

我为此创建了一个子类

现在我需要为此实现 IComparer ,并且我Main想得到像这样的 copmarer

使用这个comparer我需要employee根据他们的名字对集合进行排序,比如

0 投票
3 回答
41112 浏览

c# - 使用 lambda 表达式代替 IComparer 参数

C# 是否可以在方法调用中将 lambda 表达式作为 IComparer 参数传递?

例如类似的东西

我无法完全编译它,所以我猜不是,但 lambda 和匿名代表之间似乎有如此明显的协同作用,我觉得我一定是在做一些愚蠢的错误。

TIA

0 投票
3 回答
107 浏览

linq - Linq 与 IComparer 的比较

我见过这样的类:

然后在代码中稍后有一个调用来进行排序:

一切正常。我认为创建一个只有名称值的 QueryParameter 类是浪费时间,使用 Dictionary 可能会更好。使用字典,而不是使用 Sort(new QueryParameterComparer()); 我想我可以这样做:

代码编译得很好,但我不确定它是否正常工作,因为列表似乎只是按照它放入的顺序输出。所以,谁能告诉我我这样做是否正确,或者我是否遗漏了一些简单的东西?

干杯/r3plica

0 投票
1 回答
142 浏览

c# - 将 IntPtr 与 IComparer 一起使用

这里有三个相关的问题:

  • IntPtr结构显然没有实现<>运算符。有没有办法在不将结构转换为 int 或 long 的情况下执行这种比较?
  • 为什么<and>运算符没有在这个结构上实现?
  • 我正在从 32 位进程枚举窗口。似乎还包括来自 64 位进程的 Windows,这很好。如何判断是在 IntPtr 结构上使用 ToInt32 还是 ToInt64?

上下文:Windows 7(64 位)、VS 2010、WinForms(32 位)。

我要提取的目标窗口包括 64 位应用程序,例如包含小工具的 Windows 边栏。如果我有任何错误的假设,请告诉我。

0 投票
1 回答
78 浏览

c# - 多个列表上的 icomparer

我有 3 个不同的列表,其中包含相同的项目。( 列表 )

当我使用 icomparer 按日期对它们进行排序时,我的 c# 表单在每个列表中对它们进行排序 en 不会将所有项目放在一起并在此之后对其进行排序。

我得到的那 3 个列表,我希望比较器将所有列表中的所有项目排序在一起,而不是按每个列表对它们进行排序......

这是我的比较器正在做的(例如,按日期排序):

清单 1

03-04-2013

05-04-2013

清单 2

04-04-2013

06-04-2013

清单 3

01-04-2013

02-04-2013

但我想要的是,将所有列表项排序在一起并执行此操作:01-04-2013

02-04-2013

03-04-2013

04-04-2013

05-04-2013

06-04-2013

任何人都知道我该如何解决这个问题......我真的很感激它!

我想要做的是:将所有列表项(来自 3 个列表)放在一起并在项目上使用 iComparer。

0 投票
1 回答
2522 浏览

c# - 将 IComparer 参数传递给自定义 LINQ OrderBy 扩展方法

经过大量的谷歌搜索并尝试了一些事情并没有找到/得到想要的结果后,我决定发布这个问题。

我有一个定制的OrderBy扩展方法,现在在执行OrderBy操作时我想传递一个AlphanumComparator这样的:

这是扩展方法:

请参阅我认为应该通过的代码中的注释IComparer...我该如何处理?