比较器 Comparison 与 IComparer

Comparison 的使用

var comparer = new Comparison<Tmx2ESModel>((Tmx2ESModel x, Tmx2ESModel y) =>
            {
                if (x.RequestGuid == targetGuid && y.RequestGuid == targetGuid)
                {
                    return 0; //不变
                }
                else if (x.RequestGuid == targetGuid && y.RequestGuid != targetGuid)
                {
                    return -1; //向前排
                }
                else
                {
                    return 1; //向后排
                }
            });

排序完之后,按照返回的int值,集合是由小到大排列的。

//一般用StringComparison.Ordinal
//不区分大小写StringComparison.OrdinalIgnoreCase
files.Sort((x,y)=> string.Compare(x.FileName, y.FileName, StringComparison.InvariantCultureIgnoreCase));

两个接口提供的方法返回值都是int类型的,负数代表小于,0代表等于,正数代表大于。

使用无参Sort()时,集合中至少要有一个类实现了IComparable,否则会报错。

posted @ 2022-01-28 13:12  【唐】三三  阅读(91)  评论(0编辑  收藏  举报