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: 超出 ...
随机推荐
- mysql5.5修改字符编码
因为mysql版本问题,网上各种修改编码的方法都不行,最后找到下面这条,终于解决! [mysqld]下添加: character-set-server=utf8 collation-server=ut ...
- request相关研究
一.什么是httpservletrequest 用来处理一个对Servlet的HTTP格式的请求信息. 二.httpservletrequest的作用是什么 优点: 公共接口类HttpServletR ...
- C#用 excel 作为模板打印
//打印操作,套打.打印.预览 enum PrintFlag { /// <summary> /// 套打,只打印没 ...
- 关于scanf的返回值
今天写一个小程序时误用while(scanf("%d",&b)!=a),以为scanf的返回值就是输入的值. 其实真相是: scanf返回接收到的变量值的个数. int a ...
- sudo命令出错 must set be suid
特殊权限 4,2 ,1 4 suid,控制用户执行的文件,以文件所属用户的身份执行.当一个可执行的文件拥有suid时,会将文件拥有者的x位变成s(---s--x--x),这时称为set uid,简写 ...
- 2.1 Word 插入 smartart、图表
1.插入-smartart 2.插入后的图表中,左边可键入文字 3.按住TAB可以往后缩进 选中目标按住shift+TAB 可以往前缩进. 1.插入-图表 2.选择形状 3.会成功插入对比图表 以及出 ...
- javascript 局部变量和全局变量
刚开始学js,遇到了一个奇怪的问题,查找之后知道了答案 需要记住两句话 1 Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是f ...
- TCP三次握手中,为什么需要第三次握手?
为什么客户端A还要发送一次确认呢?(为什么需要第三次握手) 这主要是为了防止已失效的连接请求报文段突然又传送到了B(服务器端),因而产生错误. 所谓"已失效的连接请求报文段"是这样 ...
- windows和Ubuntu双系统的安装和基本操作
因为最近刚开始学习ubuntu系统,首先要安装系统,搜集了网上的资料觉得这篇博客特别有用 http://www.cnblogs.com/Duane/p/5424218.html,我也是按照里面的步骤 ...
- JavaScript 属性操作
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...