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: 超出 ...
随机推荐
- 按键精灵http.定义getWeb
Function 取网页源码(URL) Set objXML=CreateObject("Microsoft.XMLHTTP") objXML.Open "Get&quo ...
- C#中“类似GridView等控件”的前台显示与后台数据变化之间的关系
最近用dev的treelist,gridcontrol等控件,这些控件显示数据都需要进行DataTable等数据源的绑定,而经理又要求可以随时更改其中的内容,刚开始总是不断的刷新控件.更新控件的数据源 ...
- Meta标签中的format-detection属性及含义让IPHONE的数字可以改变颜色
format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的format-detection属性主要是有以下几个设置: meta na ...
- FD.io VPP 技术Neutron VNF vRouter 实现
在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网.内网到外网的作用.不同子网之间的访问 ...
- 初学laravel框架,解决访问路由404的问题
运行环境:windows+phpstorm+Nginx 第一步:添加 PHP Built-in Web Server 第二步:配置路径和端口(路径是你的laravel中的pubilc,端口是你没有占用 ...
- liunx下试用yum进行php及opchache扩展安装
Centos 6.6 环境: php 5.6.29 nginx:1.10.2 1.配置安装包源 # CentOs 6.x rpm -Uvh http://mirror.webtatic.com/yum ...
- final使用
final修饰 基本数据类型时候 对应的 数据不能改变:::final修饰 对象类型 ,那么对应的引用地址不能改变(对象中的值可以改变): 如果final修改方法,那么该方法不能被子类重写 :: ...
- 常用几种Java Web容器
Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问.开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的We ...
- CodeForces 702A Maximum Increase
简单$dp$. 如果$a[i]>a[i-1]$,那么$dp[i]=dp[i-1]+1$.否则,$dp[i]=1$.答案为$dp[i]$中的最大值. #pragma comment(linker, ...
- mysql简单建表
MySQL 字段约束 null,not null,default,auto_increment [来源于] 没有规矩,不成方圆,任何事物都是如此.在MySQL中,每个字段定义都包含附加约束或者修饰符, ...