社区
C#
帖子详情
C# List.Sort() 出现无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值
Null_Link
2020-11-06 09:59:59
C# List.Sort() 出现报错无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果
有大佬知道怎么解决吗
...全文
15352
5
打赏
收藏
C# List.Sort() 出现无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值
C# List.Sort() 出现报错无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果 有大佬知道怎么解决吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
暖杨洋的好日子,婷美
2020-11-11
打赏
举报
回复
干嘛用lambda表达式,看起来好繁琐
shawn_yang
2020-11-09
打赏
举报
回复
自己重写compare,可以按你的需求判定大小
syeerzy
2020-11-09
打赏
举报
回复
或简化为: (a, b) => { var aa = a.Name.Contains("XXX"); var bb = b.Name.Contains("XXX"); if (aa && !bb) return -1; else if (!aa && bb) return 1; else return 0; }
syeerzy
2020-11-09
打赏
举报
回复
你lambda里面的逻辑错了, 你想按什么排序? 我按你的代码猜想你可能的排序逻辑是想把Name里面带有某个字符串"XXX"的排后面, 其他排前面, 其他具体顺序无所谓. 如果这样, 你应该是这么写: (a, b)=> { if (a.Name.Contains("XXX")){ if(b.Name.Contains("XXX")) return 0; else return 1; } else if (b.Name.Contains("XXX")) return -1; else return 0; }
yijigu2
2020-11-06
打赏
举报
回复
a.CompareTo(b)
csharp-natural-
sort
:I
Compare
r 的简单
C#
实现,用于通过“块”对数字、日期时间和字符串等混合内容类型进行“自然”
排序
csharp-自然
排序
I
Compare
r 的简单实现,用于通过“块”又名“令牌”对数字、日期时间和字符串等混合内容类型进行“自然”
排序
。 支持按特定列以及列表/数组对字典/哈希表进行自然
排序
。 入门 csc.exe / t:library / out:Natural
Sort
.dll Natural
Sort
.cs I
Compare
r < object >
sort
Compare
;
sort
Compare
= new Natural
Sort
();
List
< object > lTest = JSON . Deserialize <
List
>>( jsonString ); lTest .
Sort
(
sort
Compare
); 例子 对列表中的
值
进行
排序
: in: [ " img100.jpg " , " img10.jpg " , " img2.
Linq基础学习资料,通俗易懂
目录 1 LINQ查询结果集 1 2 System.Array 数组 1 2.1 基于System.Array定义数组 1 2.2 基于类型定义数组 1 2.3 数组元素的清空 1 2.4 System.Array类静态成员 1 2.5 不用循环填充数组 1 2.6 数组类实例成员 2 3 System.Collections 集合 2 3.1 Array
List
2 3.1.1 实例成员 2 3.1.2 静态成员 2 3.2
List
3 3.3 Hashtable 6 3.4
Sort
ed
List
6 3.5
Sort
ed
List
7 3.6 Queue
8 3.7 Stack
8 3.8 Linked
List
8 3.9 HashSet
9 4 System.Linq 10 4.1 System.Linq.Enumerable 10 4.2 System.Linq.Queryable 10 4.3 System.Linq.Lookup
10 4.4 System.Linq.Expressions.Expression 10 5 接口 10 5.1 IEnumerable 、IEnumerator 10 5.1.1 正常使用 10 5.1.2
C#
的 yield 12 5.2 IEnumerable
12 5.3 IEnumerator
12 5.4 ICollection 12 5.5 ICollection
13 5.6 I
List
13 5.7 I
List
13 5.8 IEquality
Compare
r 13 5.9 IEquality
Compare
r
13 5.10 IDictionary 13 5.11 IDictionary
13 5.12 IDictionaryEnumerator 13 5.13 I
Compare
r 13 5.13.1 接口
方法
说明 int
Compare
(object x, object y) 13 5.13.2 Array
List
.
Sort
(I
Compare
r)
方法
13 5.14 I
Compare
r
14 5.14.1 接口
方法
override int
Compare
(T x, T y)说明 14 5.14.2
List
.
Sort
(I
Compare
r)
方法
14 5.15 System.Linq.IGrouping
14 5.16 System.Linq.ILookup
14 5.17 System.Linq.IOrderedEnumerable
14 5.18 System.Linq.IOrderedQueryable 14 5.19 System.Linq.IOrderedQueryable
15 5.20 System.Linq.IQueryable 15 5.21 System.Linq.IQueryable
15 5.22 System.Linq.IQueryProvider 15 6 集合扩展
方法
15 6.1 集合扩展
方法
的实现:
一个
Where的例子 15 6.2 延迟类 15 6.2.1 Select 选择 16 6.2.2 SelectMany 选择 16 6.2.3 Where 条件 16 6.2.4 OrderBy
排序
升 17 6.2.5 OrderByDescending
排序
降 17 6.2.6 GroupBy 分组 17 6.2.7 Join 联合查询 18 6.2.8 GroupJoin 18 6.2.9 Take 获取集合的前n个元素 19 6.2.10 Skip 跳过集合的前n个元素 19 6.2.11 Distinct 过滤集合中的相同项 19 6.2.12 Union 连接不同集合,自动过滤相同项 19 6.2.13 Concat 连接不同集合,不会自动过滤相同项 19 6.2.14 Intersect 获取不同集合的相同项(交集) 20 6.2.15 Except 从某集合中删除其与另
一个
集合中相同的项 20 6.2.16 Reverse 反转集合 20 6.2.17 TakeWhile 条件第一次不成立就跳出循环 20 6.2.18 SkipWhile 条件第一次不成立就失效,将后面的数据全取 20 6.2.19 Cast 将集合转换为强类型集合 21 6.2.20 OfType 过滤集合中的指定类型 21 6.3 不延迟(浅复本) 21 6.3.1 Single 集合中符合条件的唯一元素,浅复本 21 6.3.2 SingleOrDefault 集合中符合条件的唯一元素(没有则
返回
类型默认
值
),浅复本 21 6.3.3 First 集合的第
一个
元素,浅复本 21 6.3.4 FirstOrDefault 集合中的第
一个
元素(没有则
返回
类型默认
值
),浅复本 22 6.3.5 Last 集合中的最后
一个
元素,浅复本 22 6.3.6 LastOrDefault 集合中的最后
一个
元素(没有则
返回
类型默认
值
),浅复本 22 6.3.7 ElementAt 集合中指定索引的元素,浅复本 22 6.3.8 ElementAtOrDefault 集合中指定索引的元素(没有则
返回
类型默认
值
),浅复本 22 6.3.9 Contains 判断集合中是否包含有某一元素 22 6.3.10 Any 判断集合中是否有元素满足某一条件 22 6.3.11 All 判断集合中是否所有元素都满足某一条件 23 6.3.12 SequenceEqual 判断两个集合内容是否相同 23 6.3.13 Count 、LongCount集合中的元素个数 23 6.3.14 Average 、Sum集合平均
值
求和 23 6.3.15 Max、Min 集合最大
值
,最小
值
24 6.3.16 Aggregate 根据输入的表达式获取
一个
聚合
值
24 6.3.17 DefaultIfEmpty 查询结果为空则
返回
默认
值
,浅复本 24 6.3.18 ToArray 将集合转换为数组,浅复本 24 6.3.19 To
List
将集合转换为
List
集合,浅复本 25 6.3.20 ToDictionary 将集合转换为
集合,浅复本 25 7 Lambda表达式 25 7.1 例1(比效) 25 7.2 例2(多参) 27 7.3 例3(
list
.Where) 27 7.4 Lambda表达式中Lifting 28 8 QuerySyntax 查询语法 29 8.1 from in select 30 8.2 orderby
排序
30 8.3 group by into 分组 31 8.4 join in on equals 联合查询 33 8.5 into 汇总 33 9 DataSource 数据绑定 34
C#
List
.
Sort
(I
Compare
r
compare
r) 不稳定
排序
C#
List
.
Sort
(I
Compare
r\踩坑 使用
List
.
Sort
(I
Compare
r<T>
compare
r)进行自定义
排序
时,发现关键字
相等
的元素
排序
后先后顺序发生改变。检查自己实现的I
Compare
<T>.
Compare
方法
逻辑没发现问题。后来查阅MSDN文档发现: This method uses Array.
Sort
, which applies the...
[异常]
List
.
Sort
()
返回
在
Compare
时出错:I
Compare
r (或其依赖的 IComparable
方法
)未
返回
零...
今天在实现
一个
IComparable<Dispatcher>接口时遇到了问题,在执行过程中抛出了如下异常: 当 Array.
Sort
调用 x.
Compare
To(x) 时,I
Compare
r (或其依赖的 IComparable
方法
)未
返回
零。x:“”x 的类型:“Dispatcher”I
Compare
r:“”。;StackTrace: 在 System.Collect...
C#
List
.
Sort
排序
C#
中,
List
.
Sort
() 不仅为我们提供了默认的
排序
方法
,还为我们提供了4种自定义
排序
的
方法
,通过默认
排序
方法
,我们无需重写任何
Sort
()
方法
的实现代码,就能对单参数类型的
List
数据进行单一规则的
排序
,如果通过对这些
方法
进行改进我们可以轻松做到对多参数、多规则的复杂
排序
。 默认
排序
排序
Sort
,倒序Reverse //默认是元素第
一个
字母按升序
list
.
Sort
(); //将
List
里面元素顺序反转
list
.Reverse(); //从第二个元素开始,反转4个元素 //结果
list
.
C#
110,580
社区成员
642,559
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章