问题标签 [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 投票
1 回答
1183 浏览

c# - 排序列表比较

我有两个排序列表

(应用程序特定信息 - 键是行业 ID,值是重量)

我想比较列表中的变化。

我想要以下东西 -

  • 重量不为零的项目列表,但在新列表中为零。

  • 重量不为零且已从旧列表更改的项目列表。

我知道有一种东西叫做比较器。可以在这里使用吗?

0 投票
1 回答
3607 浏览

c# - IComparer、OrderBy 和 Linq

我有一个要与 OrderBy 一起使用的自定义比较器。这个比较器可以按照我想要的方式对嵌套列表进行排序。我在其他地方完美地工作,但我不能让它以我想要的方式与 Linq 一起工作。你能告诉我哪里错了吗?

编辑:我想让它工作的方式是首先按类(BaseDirectory > BaseSite > VideoEntity,总是)对我的实体进行分组,然后按字母顺序对它们进行排序(升序 = A-> Z,或降序 Z-> A)。无论如何,当我使用 SortDirectoriesDescending() 时,我会返回按升序排序的集合。默认情况下,集合以升序模式排序(因此转换器可以工作,我已经对其进行了降序测试,也可以)


0 投票
2 回答
597 浏览

c# - 比较 3 个对象

我正在用 C# 编写通用二叉树。

在我的应用程序的一部分中,我需要按距离排序。

从 A 到 C 和 B 到 C。

像这样的东西:

但问题是,我只能在 2 个对象之间进行比较……而且我需要某种比较器。

创建像“开始和结束之间的距离”这样的类是正确的解决方案吗?我认为它产生了太多的垃圾。

有什么解决办法吗?谢谢 ;-)

编辑:

我没有工作的 IComparer...

编辑:

问题解决了,现在我有一个工作的 IComparer!

谢谢 ;-)

0 投票
2 回答
2568 浏览

c# - IComparable 与作为泛型类型参数发送的枚举 (C#)

可能重复:
C# 中的两个枚举何时相等?

我有以下类作为简单状态机的一部分。

请注意,所有泛型类型参数都必须是枚举。这已在构造函数中强制执行(此处未显示)。

以上确实可以编译,但我不确定这是否是处理作为泛型类型参数传入的枚举的正确方法。

注意:比较功能不需要记住排序。相反,它需要检查确切的重复项。

0 投票
2 回答
106 浏览

c# - 如何为模型上可用于 Silverlight DataGrid 列排序的特定属性指定 IComparer

我有一个 Silverlight 数据网格,其中的一列绑定设置为模型上的字符串属性。这些字符串是字母数字的,所以我创建了一个自定义 IComparer 来对它们进行适当的排序。我的问题是如何在按此列排序时强制网格使用此自定义比较器?

我的一个想法是可能有一些属性可以应用于我绑定到的模型的字符串属性,它会明确指定在将此值与另一个字符串进行比较时要使用的比较器?

0 投票
1 回答
15175 浏览

linq - 如何将自定义比较器与 Linq Distinct 方法一起使用?

我在读一本关于 Linq 的书,看到 Distinct 方法有一个需要比较器的重载。这将是一个很好的解决方案,我想从集合中获取不同的实体,但希望在实体 ID 上进行比较,即使其他属性不同。

根据这本书,如果我有一个 Gribulator 实体,我应该能够创建一个像这样的比较器......

...然后像这样使用它...

但是,这会产生以下编译器错误...

“System.Collections.Generic.List”不包含“Distinct”的定义和最佳扩展方法重载“System.Linq.Enumerable.Distinct(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEqualityComparer)”有一些无效的论点

参数 2:无法从 'LinqPlayground.Program.GribulatorComparer' 转换为 'System.Collections.Generic.IEqualityComparer'

我搜索了一下,看到了很多使用这样的代码的例子,但没有关于编译器错误的抱怨。

我究竟做错了什么?另外,这是最好的方法吗?我想要一个一次性的解决方案,所以不想开始更改实体本身的代码。我希望实体保持正常,但就在这个地方,仅按 ID 进行比较。

谢谢你的帮助。

0 投票
3 回答
2000 浏览

c# - C# 泛型类和 EqualityComparer

谁能解释一下以下类声明中有什么问题:

编译器在我使用 EqualityComparer 的那一行抱怨。错误如下:

错误 CS0176:无法使用实例引用访问静态成员 `object.Equals(object, object)',而是使用类型名称对其进行限定

我看不到我在哪里使用实例引用。


对不起,我的错。我发布了一个不完整的问题。为了完整起见,标识符类如下:

在那里使用 EqualityComparer 是由于复制和粘贴错误(对不起,今天的通用代码太多)。

当然我的问题是错误的,因为我没有给你所有你需要回答的元素(我很快就会删除它)。我IType需要IConvertible。总之谢谢大家。

0 投票
1 回答
9865 浏览

c# - 此 Icomparer 中导致空引用的不一致在哪里?

我在我的自定义 IComparer 实现中收到一个空对象,尽管它所应用的集合中没有空条目。我的理解是这可能是由 IComparer 实现中的不一致引起的。我无法在以下代码中发现这可能发生的位置。

作为参考,目的是这些首先按“正确”属性排序,然后如果它们相同,则根据“tiebreakerDelta”属性进行排序,该属性最接近零排序而不会超过。

感谢您提供的任何帮助!

编辑:我确定这不是一个真正的空引用,它是由一些不一致引起的。此外,有时会显示此错误文本以确认 -

不幸的是,断点对我没有帮助。

编辑:这是一个简短的示例,其中 ResultsLineViewModel 实现了 IFoolsSortable 接口:

正确的排序是: Line1, line3, line2, line4

0 投票
3 回答
5206 浏览

c# - 使用 IComparer 通过另一个列表对具有自定义对象的列表进行排序

我的问题是关于IComparer界面的,我以前从未使用过它,所以我希望你能帮助我正确设置一切。

我必须使用该接口按另一个对象的确切顺序对自己的对象列表进行排序List<int>。我在网上找不到任何对这个问题有用的东西,我发现的所有东西都是 linq 语句,我无法使用。

这是示例代码:

一些需要处理的数据:

以及正确顺序的列表:

那么现在我怎么能告诉IComparer排序OrderByList呢?我真的不知道该怎么做,我知道使用 linq 会很容易,但我没有机会使用它。

0 投票
1 回答
159 浏览

java - 在 vb.net 中使用 IComparable 比较石头、剪纸和剪刀游戏的武器(与 JAVA 中的 Comparable 相同)

我是编程和 OOP 的新手,所以请原谅我缺乏知识。

作为我的 Rock、Paper 和 Scissors 游戏的一部分,我想在 VB.NET 中创建一个具有子类(Rock、Paper 和 Scissors)的抽象超类(武器)。我找到了 JAVA 等价物:

我目前有以下内容:

结束类

有人可以更正代码,以便可以比较 Rock、Paper 和 Scissors 对象。任何帮助将不胜感激。

谢谢