问题标签 [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 回答
2946 浏览

c# - C# SortedList,按键获取值

我按降序排列了 SortedList。

当在没有我自己的 IComparer 的情况下创建 SortedList 时,代码可以正常工作并且不会发生异常。

0 投票
1 回答
442 浏览

c# - C#中元素层次结构中的排序问题

我一直在 ASP.NET 中处理一个页面。此页面的行为与论坛完全一样。用户可以回复条目。回复表示为 ItemReply。当用户回复项目时,ParentID 设置为用户正在回复的 ItemReply 的 ID。

这段代码基本上是通过以下方式执行的:

顺序和层次结构似乎工作正常。但是,SetLevel 方法无法正常工作。SetLevel 的目的基本上是从 UI 角度确定回复的缩进程度。为了演示,想象有以下层次结构:

出于某种原因,我所有的 ItemReply 元素的级别都是 1。我做错了什么?

谢谢!

0 投票
3 回答
3064 浏览

c# - 为什么 List.BinarySearch() 没有进行比较的重载除了 IComparer?

我想使用List.BinarySearch()自定义项目类型。自定义类型不实现IComparable<T>;相反,我有几个Comparison<T>我调用的静态函数,因为在不同的点我想根据不同的标准对列表进行排序。另外,我认为它增加了清晰度,因为您的排序方式可以通过函数名称来描述。现在我想对列表进行二进制搜索。我想使用我的一个比较函数,却发现它List.BinarySearch()没有接受的重载Comparison<T>,只有IComparer<T>. 我尽量避免IComparer<T>,因为我觉得有一个单独的类只是为了比较对象很愚蠢。为什么没有除了 之外的List.BinarySearch()重载?有什么方法可以使用我现有的功能吗?Comparison<T>IComparer<T>Comparison<T>List.BinarySearch()

0 投票
2 回答
1066 浏览

vb.net - 如何根据非唯一值对列表中的对象进行排序?

我正在尝试按存储的关键字对文章进行分类。我有一个类别的关键字列表,我希望为一篇文章分配一个关键字计数最多的类别。

这是为每个类别完成的,为每篇文章运行。我正在尝试对列表进行排序,以判断哪个类别最适合本文。然而,最好的类别可能不止一个,而且没有一个类别适合。所以运行这个对我没有帮助:

也许我做这一切都是错的,但到目前为止,我认为我走在正确的道路上。(我在 Category 类中也有一个默认比较,它也不起作用。)

我在最可能导致的排序上遇到异常,因为它们不是唯一的。

我得到的异常是 InvalidOperationException:无法比较数组中的两个元素。那是使用我在 ArticleClass 中构建的比较器

0 投票
6 回答
1094 浏览

c# - C# 用数字对数组列表进行排序

您好,我确实想要一个数组,其中包含:

但如果我使用这个:

输出变为:

但我不会输出是:

在/使用 C# 中最简单的方法是什么?

当我这样做时,我无法让字母数字排序工作:

找不到类型或命名空间“AlphanumComparatorFast”您是否缺少 using 指令或程序集引用

是我得到的错误...

0 投票
2 回答
40794 浏览

c# - 使用字符串实现自定义 IComparer

例如,我在 c# 中有一个字符串集合;

然后我对此进行排序,但我的 IComparer 方法不起作用,并且看起来无限循环。

基本上我需要"b"先来,然后是"c",然后我不在乎其他任何人的顺序。

这可能使用 IComparer<string>Compare(string x, string y)方法吗?

编辑:代码

0 投票
2 回答
57 浏览

.net - 无法创建比较器

我有一堂课

我有一个此类对象的列表:

我想按 SelectedDate 对这个集合进行排序。我尝试:

进而

但它只是混合元素,而不是排序。怎么了?

0 投票
2 回答
1102 浏览

c# - 基于接口属性的 IComparer

我创建了一个类 Car,它派生自抽象类 TransportMeans并实现了一个接口 PrivateMeans,它只包含一个属性:

我想实现一个类,它根据属性容量对Car 类的对象进行排序。我想通过使用接口 IComparer来做到这一点。

但是,当我如下声明一个附加类 CarComparer时:

我收到错误:

错误 1“MeansOfTransport.CarComparer”未实现接口成员“System.Collections.Generic.IComparer.Compare(MeansOfTransport.Car, MeansOfTransport.Car)”。

问题是什么?

此外,我不允许在没有类型定义(汽车)的情况下使用IComparer 。为什么?

0 投票
1 回答
150 浏览

c# - 如何更改 MVC 项目中的默认 IComparer?

在 ASP.net MVC3 项目中,我有一个 IComparer 接口的自定义实现。我想在对字符串进行排序时默认使用我的comaprer。如何更改项目的默认 IComparer?

0 投票
3 回答
2862 浏览

c# - 带有投影比较器的 LINQ OrderBy 匿名对象

我一直在尝试OrderBy使用 LINQ 语句来处理匿名对象,但现在失败了。

我已经检查了这些:
匿名 IComparer 实现
C# linq sort - 实例化 IComparer 的快速方法
如何在 C# 中按特定字段对对象数组进行排序?

我花了几个小时尝试不同的方法,但一定有我遗漏的东西。

假设有以下课程:

并且products是这些对象的列表。

如何完成此 LINQ 语句,以便它与匿名对象一起使用?
需要明确的是,我知道我可以以不同的方式做到这一点,但我非常有兴趣学习如何使这个特定的例子工作。

似乎应该可以实现ProjectionComparer
http ://code.google.com/p/edulinq/source/browse/src/Edulinq/ProjectionComparer.cs?r=0c583631b709679831c99df2646fc9adb781b2be

任何想法如何做到这一点?

更新:

我对此进行了快速性能测试 - 匿名比较器解决方案与标准 orderby.thenby 解决方案似乎匿名解决方案相当慢,这可能是我们可能已经预料到的。