C# List 扩展排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Common.Unit { public static class ListHelper { /// <summary> /// 将List转换成String /// </summary> /// <param name="list">List对象</param> /// <returns></returns> public static string SeperateToString(this IEnumerable<int> list) { return SeperateToString(list, ","); } /// <summary> /// 将List转换成String /// </summary> /// <param name="list">List对象</param> /// <param name="seperate">分隔符</param> /// <returns></returns> public static string SeperateToString(this IEnumerable<int> list, string seperate) { string str = ""; ) return str; foreach (int i in list) { str += seperate + i; } return str.Substring(seperate.Length); } /// <summary> /// 将List转换成String /// </summary> /// <param name="list">List对象</param> /// <returns></returns> public static string SeperateToString(this IEnumerable<string> list) { return SeperateToString(list, ","); } /// <summary> /// 将List转换成String /// </summary> /// <param name="list">List对象</param> /// <returns></returns> public static string SeperateToString(this IEnumerable<string> list, bool removeEmpty) { return SeperateToString(list, ",", removeEmpty); } /// <summary> /// 将List转换成String /// </summary> /// <param name="list">List对象</param> /// <param name="seperate">分隔符</param> /// <returns></returns> public static string SeperateToString(this IEnumerable<string> list, string seperate) { return SeperateToString(list, seperate, false); } /// <summary> /// 将List转换成String /// </summary> /// <param name="list">List对象</param> /// <param name="seperate">分隔符</param> /// <param name="removeEmpty">移除空字符</param> /// <returns></returns> public static string SeperateToString(this IEnumerable<string> list, string seperate, bool removeEmpty) { string str = ""; ) return str; foreach (string s in list) { if (removeEmpty && string.IsNullOrEmpty(s)) continue; str += seperate + s; } ) str = str.Substring(seperate.Length); return str; } /// <summary> /// 扩展distinct 方法 调用方式lst = lst.Distinct((x, y) => x.ID==y.ID ).ToList(); /// </summary> /// <typeparam name="TSource"></typeparam> /// <param name="list"></param> /// <param name="dele"></param> /// <returns></returns> public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> list, EqualsComparer<TSource> dele) { return list.Distinct(new Compare<TSource>(dele)); } /// <summary> /// 扩展distinct 方法 调用方式 lst = lst.Distinct(p => p.ID).ToList(); /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="V"></typeparam> /// <param name="source"></param> /// <param name="keySelector"></param> /// <returns></returns> public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector) { return source.Distinct(new CommonEqualityComparer<T, V>(keySelector)); } static void test() { List<int> list = new List<int>(); list.Add(); list.Add(); list.Add(); Console.WriteLine(list.SeperateToString(",")); List<string> list2 = new List<string>(); list2.Add("); list2.Add("); list2.Add("); Console.WriteLine(list2.SeperateToString(",", false)); } } #region 实现Distinct IEqualityComparer 接口 public delegate bool EqualsComparer<T>(T x, T y); public class Compare<T> : IEqualityComparer<T> { private EqualsComparer<T> _equalsComparer; public Compare(EqualsComparer<T> equalsComparer) { this._equalsComparer = equalsComparer; } public bool Equals(T x, T y) { if (null != this._equalsComparer) return this._equalsComparer(x, y); else return false; } public int GetHashCode(T obj) { return obj.ToString().GetHashCode(); } } public class CommonEqualityComparer<T, V> : IEqualityComparer<T> { private Func<T, V> keySelector; public CommonEqualityComparer(Func<T, V> keySelector) { this.keySelector = keySelector; } public bool Equals(T x, T y) { return EqualityComparer<V>.Default.Equals(keySelector(x), keySelector(y)); } public int GetHashCode(T obj) { return EqualityComparer<V>.Default.GetHashCode(keySelector(obj)); } } #endregion }
C# List 扩展排序的更多相关文章
- hive 排序和聚集
1.order by 是对数据进行全排序,属于标准排序语句 order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规 ...
- java 字符串排序
http://bbs.csdn.net/topics/280032929 大可不需要那样复杂了!(一)如果要排序的为字符串,如:String sortStr = "ACDFE"; ...
- javascript table排序之jquery.tablesorter.js
table排序 jquery.tablesorter.js 一.Demo下载地址: 1.tablesorter.js下载地址: http://download.csdn.net/detail/zhan ...
- Guava中强大的排序器Ordering使用
一 创建排序器 排序器:可以用来为构建复杂的比较器,以完成集合排序的功能: 本质上来说,Ordering 实例无非就是一个特殊的Comparator 实例. Ordering把很多基于Comparat ...
- ORA 各种oraclesql错误
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...
- oracle 错误代码大全
oracle错误代码大全(超详细) ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最 ...
- SQL错误码
///////////////////////////////////////////////////////////////ORA-00001: 违反唯一约束条件 (.)ORA-00017: 请求会 ...
- oracle错误码
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...
- Oracle 错误代码
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...
随机推荐
- HDU 5860 Death Sequence(递推)
HDU 5860 Death Sequence(递推) 题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=5860 Description You ...
- 解决 git extensions 每次提交需要输入用户名和密码
打开git bash 输入用户名和密码 git config --global user.name "username" git config --global user.emai ...
- Linux下TFTP的安装,配置和操作
注:转载他人,仅供自己研究学习使用 TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支 ...
- C#动态编程
class Program { static void Main(string[] args) { Test(); } public static void Test() { //声明代码的部分 Co ...
- openstack私有云布署实践【13.1 网络Neutron-compute节点配置(科兴环境)】
所有kxcompute节点 下载安装组件 # yum install openstack-neutron openstack-neutron-linuxbridge ebtables ipset ...
- 获取星座的JS函数
通过JS获取星座的函数 function getConstellation(m,d){ var s="魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯"; var arr=[2 ...
- HDU 5855 Less Time, More profit
二分t+最大权闭合图. 很显然二分那个t作为limit.每一个limit下,有一些边不能用了,然后要知道这种情况下怎么选点获得的价值最大. 这么想:一个shop想获得收益,就必须选择某一些plant, ...
- ACdream 1728 SJY's First Task
简单题. 先建树,我用邻接表来存了.然后对于每个叶子结点DFS一下,DFS深度超过了K就return,找到了叶子节点就记录下来,最后排个序,然后输出答案. 由于结点编号比较奇葩,所以用两个map来转换 ...
- iOS上传图片详解
iphone中图像通常存储在4个地方[相册.应用程序包.沙盒.Internet],通过这4个源,我们就可以存取应用图片. 相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过 ...
- mog使用指南
mog使用指南 mgo简介 mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试. 官方网站:http://labix.org/mgo. ...