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 = "";if (list == null || list.Count() == 0)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 = "";if (list == null || list.Count() == 0)return str;foreach (string s in list){if (removeEmpty && string.IsNullOrEmpty(s))continue;str += seperate + s;}if (str.Length > 0)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(1);list.Add(2);list.Add(3);Console.WriteLine(list.SeperateToString(","));List<string> list2 = new List<string>();list2.Add("1");list2.Add("2");list2.Add("3");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);elsereturn 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
}

转载于:https://www.cnblogs.com/jieliu726/p/3996510.html

C# List 扩展排序相关推荐

  1. boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例

    boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例 实现功能 C++实现代码 实现功能 boost::sort模块实现使用最坏情况分布进行扩展排序的排序示例 C++实现代码 #inc ...

  2. java 字符串排序

    http://bbs.csdn.net/topics/280032929 大可不需要那样复杂了! (一)如果要排序的为字符串, 如:String sortStr = "ACDFE" ...

  3. 如何利用一维数组实现二维数组的多列自由升降序排序过程详解

    如何利用一维数组实现二维数组的多列自由升降序排序过程详解 本例只说明多列排序的实现方式,一维数组的排序已经有过讲解不在赘述.所以本文是在已经完成了一维数组排序的函数封装的基础上完善多列排序的过程的详解 ...

  4. 通过EXCEL对相似词条进行分类、排序和去重

    目录 序言 倒序 扩展排序 去重 参考: 序言 在一些统计工作中,会有这样的需求.先看一个示例: 江苏苹果项目 浙江苹果项目 黑龙江华为项目 辽宁苹果项目 黑龙江OPPO项目 甘肃小米项目 四川OPP ...

  5. FineReport-公式实现自定义排序

    当想要横向扩展排序时,在数据集中sql排序后可能改变竖向顺序,需要在模板中实现自定义排序 1.新建数据集,单独作为排序的数据 2.在横线扩展中设置公式排序 inarray(C2,顺序.select(D ...

  6. Android - N级树形结构实现

    目前已经实现3级之内的任意级树形结构展示(如果想增加更多级,需要扩展排序算法),并支持单选和多选(使用不同的适配器). 实现使用的控件:ListView 首先,最重要的应该是数据源的格式,支持树形结构 ...

  7. idam oracle_oracle错误代码大全(超详细)

    本篇文章是对oracle错误代码进行了详细的总结与分析,需要的朋友参考下 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会 ...

  8. seach和seachd的区别

    2019独角兽企业重金招聘Python工程师标准>>> search是sphinx中的一个辅助工具,searchd负责服务器类环境中的搜索,而search专注于在命令行上对索引进行快 ...

  9. java中的codereview

     关于codereview,在平时的开发中,经常忽略的环节,参照目前介绍写好代码的几本书和之前掉进的坑,做了一个总结,分享出来. 为什么要做 通过review规避一些代码层面的问题 提升可读性,方 ...

最新文章

  1. android 代码生成 keyhash,android签名 keystore 生成 keyhash
  2. 发送临时文件被服务器拒绝,临时会话说服务器拒绝了您发送离线文件的请求 - 卡饭网...
  3. Win7无线网络共享设置方法
  4. 分数优先遵循志愿php源码_分数优先 遵循志愿
  5. 毛概 第二章新民主主义革命理论
  6. react组件卸载调用的方法_React调用子组件方法与命令式编程误区
  7. Jmeter系列之接口依赖
  8. delphi7连接oracle,delphi7.0连接oracle数据库的.doc
  9. 读《松本行弘的程序世界》——松本行弘眼中Ruby受欢迎的原因
  10. 致远互联发布的智慧协同新一代企业管理平台,新在哪里?
  11. 前端改好,验证码显示不出来!!
  12. 编译caffe2遇到的坑
  13. region proposal
  14. perf常用用法简介
  15. 【Android 】零基础到飞升 | Service初涉
  16. 如何 使用 apache 访问 本地目录及本地文件
  17. 百度搜索限定时间_看别人用百度搜东西,让我怀疑自己用了假的百度
  18. 什么?你也被问到JVM了
  19. Kotlin+Retrofit + MVVM 的网络请求框架的封装
  20. 天源财富:室温下成功合成新型稳定有机化合物

热门文章

  1. Java集合框架——概述
  2. c#中结构与类的区别(转)
  3. C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2
  4. 【JAVA基础】HashSet、LinkedHashSet、TreeSet使用区别
  5. CUHK interview in Shen Zhen
  6. 前端输入框错误提示_WEB/APP开发基础之旅--前端、服务器端、数据库综合开发案例...
  7. 动态修改路由_tutorial第二部分-路由参数
  8. java 两个list相等_java 怎么比较两个list是否相同
  9. android root后的好处,安卓手机root后有什么好处
  10. python制作安装包_如何制作python安装模块(setup.py)