找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1269|回复: 1

[分享] C# List列表 去重和排序

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-5-4 21:33:16 来自手机 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
http://www.cnblogs.com/flyingTigger/archive/2012/06/07/2540443.html
C# List列表 去重和排序
public class User
{
  private String _userId;
  private String _userName;
  public String userId
  {
    get{return _useId;}
    set{_userId = value;}
  }
  public String userName
  {
    get{return _userName;}
    set{_userName = value;}
  }
}
1.对List列表去重:
//List_User_DistinctBy_userId比较器,继承自IEqualityComparer接口。
public class List_User_DistinctBy_userId:IEqualityComparer<User>
{
  public bool Equals(User x, User y)
  {
    if (x.userId == y.userId)
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  public int GetHashCode(User obj)
  {
    return 0;
  }
}
使用:
List<User> UserList = new List<User>(); //初始化
……
UserList .Add(user1);
……
if(UserList.Count > 0)
{
  UserList = UserList.Distinct(new List_User_DistinctBy_userId()).ToList();
}

2.排序
private static int SortUserByName(User a, User b)
{
  if((a==null) && (b==null))
    return 0;
  else if((a!=null) && (b==null))
    return 1;
  else if((a==null) && (b!=null))
    return -1;
  else
    return a.userName.CompareTo(b.userName);
}
使用:
UserList.Sort(SortUserByName);
当然排序还有其他几种实现方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 859个

财富等级: 财运亨通

 楼主| 发表于 2014-5-4 21:39:17 来自手机 | 显示全部楼层
在开发过程中.数组和集合的处理是最让我们担心.一般会用for or foreach 来处理一些操作.这里介绍一些常用的集合跟数组的操作函数.
首先举例2个集合A,B.
List<int> listA = new List<int> {1,2,3,5,7,9};
List<int> listB = new List<int> {13,4,17,29,2};

listA.AddRange(listB );把集合A.B合并
List<int> Result = listA.Union(listB).ToList<int>();          //剔除重复项
List<int> Result = listA.Concat(listB).ToList<int>();        //保留重复项
listA.BinarySearch("1");//判断集合中是否包含某个值.如果包含则返回0

在举例两个数组
  int[] i=new int[]{1,2};
  int[] j=new int[]{2,3};
  List<int> r = new List<int>();  
  r.AddRange(i);
  r.AddRange(j);
  int[] c = r.ToArray(); 合并数组
  int[] x=i.Union(j).ToArray<int>(); //剔除重复项
  int[] x=i.Concat(j).ToArray<int>(); //保留重复项
  int n = Array.BinarySearch(i,3);//判断数组中是否包含某个值.如果包含则返回0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-18 23:57 , Processed in 0.378590 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表