自定义排序方式

public class Custom_sort: IComparer<string>
{
List<string> _strs;
public Custom_sort(string[] strs)
{
_strs = strs.Distinct().ToList();
}
public int Compare(string x, string y)
{
if (x.Substring(x.Length - 2, 2) == y.Substring(y.Length - 2, 2))
{
return _strs.FindIndex(o => o.Equals(x.Substring(0, 2))) - _strs.FindIndex(o => o.Equals(y.Substring(0, 2)));
}
var defx = 0;
var defy = 0;
var xtrany= int.TryParse(x.Substring(x.Length - 2, 2), out defx);
var ytrany = int.TryParse(y.Substring(y.Length - 2, 2), out defy);
if (!xtrany && !ytrany)
{
return 0;
}
return defx - defy;
}
}

//需要写一个类  实现IComparer该接口的方法

DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Rows.Add(new object[] { "SP15", });
dt.Rows.Add(new object[] { "SU16", });
dt.Rows.Add(new object[] { "SM16", });
dt.Rows.Add(new object[] { "AC1d", });
dt.Rows.Add(new object[] { "AC15", });
dt.Rows.Add(new object[] { "SM15", });
dt.Rows.Add(new object[] { "SP16", });
dt.Rows.Add(new object[] { "SU15", });
dt.Rows.Add(new object[] { "AC16", });
//dr.Fill(dt);

//调用一个Custom_sort类里的一个方法

//重写IComparer里的方法
var c = dt.AsEnumerable().OrderBy(o => o.Field<string>("Name"),coustOrder).CopyToDataTable();
var b = c;

时间: 2024-10-14 04:07:22

自定义排序方式的相关文章

excel2013如何通过自定义排序方式来进行排序

在实际中,我们肯定会有这么一种需求,即按照自定义的顺序来排序.解决办法就是,我们自定义一个序列给Excel,然后让Excel按照这个序列来进行排序.如图 [解决方法,教程视频资料如下] 本教程视频资料来源:http://edu.51cto.com/course/15404.html 完整博客资料:http://blog.51cto.com/13172026/2292179 完整视频资料:http://edu.51cto.com/lecturer/13162026.html 原文地址:http:/

定制对ArrayList的sort方法的自定义排序

java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数 示例: // 外部类的方式 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.uti

C#中Dictionary&lt;TKey,TValue&gt;排序方式

自定义类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharp中Dictionary排序方式 { [Serializable] public class CustmonizedClass { public string stuName { get; set; } public int

一步一步跟我学习lucene(13)---lucene搜索之自定义排序的实现原理和编写自己的自定义排序工具

自定义排序说明 我们在做lucene搜索的时候,可能会需要排序功能,虽然lucene内置了多种类型的排序,但是如果在需要先进行某些值的运算然后在排序的时候就有点显得无能为力了: 要做自定义查询,我们就要研究lucene已经实现的排序功能,lucene的所有排序都是要继承FieldComparator,然后重写内部实现,这里以IntComparator为例子来查看其实现: IntComparator相关实现 其类的声明为 public static class IntComparator exte

hadoop提交作业自定义排序和分组

现有数据如下: 3 3 3 2 3 1 2 2 2 1 1 1 要求为: 先按第一列从小到大排序,如果第一列相同,按第二列从小到大排序 如果是hadoop默认的排序方式,只能比较key,也就是第一列,而value是无法参与排序的 这时候就需要用到自定义的排序规则 解决思路: 自定义数据类型,将原本的key和value都包装进去 将这个数据类型当做key,这样就比较key的时候就可以包含第一列和第二列的值了 自定义数据类型NewK2如下: //要实现自定义的排序规则必须实现WritableComp

php多维数组自定义排序 uasort()

php内置的排序函数很多:正反各种排: 常用的排序函数: sort() - 以升序对数组排序rsort() - 以降序对数组排序asort() - 根据值,以升序对关联数组进行排序ksort() - 根据键,以升序对关联数组进行排序arsort() - 根据值,以降序对关联数组进行排序krsort() - 根据键,以降序对关联数组进行排序 基本都能满足需求了:关于这些函数的使用方法就不多啰嗦了: 但是在项目的实际开发中还是会有些更加苛刻的排序需求:今天要介绍的排序函数是: uasort() ua

31、Arrays数组排序(续)——自定义排序

自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序. 这里我们采用两种方式,一种是使用Comparable接口:让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法,缺点是只能按照一种规则排序. 另一种方式是使用Comparator接口:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的compare()方法,在调用Ar

List自定义排序

List自定义排序我习惯根据Collections.sort重载方法来实现,下面我只实现自己习惯方式.还有一种就是实现Comparable接口. 挺简单的,直接上代码吧. package com.sort; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * list自定义排序 * @author root * */

dedecms网站文章内容按自定义排序的方法

标签dede:arclist的排序是通过orderby来指定的,如下: {dede:arclist orderby=’排序字段’ }{/dede:arclist} orderby=’sortrank’ 文档排序方式 § orderby=’hot’ 或 orderby=’click’ 表示按点击数排列§ orderby=’sortrank’ 或 orderby=’pubdate’ 按出版时间排列§ orderby=’near’§ orderby==’lastpost’ 按最后评论时间§ order