C#去除List中集合的重复项(类型对象和单一类型)
去除重复类型对象BookInfo示例:
bookList = bookList.Distinct(new DataRowComparer()).ToList(); //去除重复书籍 /// <summary>
/// 自定义书籍比较(去重)
/// </summary>
public class DataRowComparer : IEqualityComparer<BookInfo>
{
public bool Equals(BookInfo b1, BookInfo b2)
{
return (b1.BookId == b2.BookId); //去重
}
public int GetHashCode(BookInfo b)
{
return b.ToString().GetHashCode();
}
}
推荐使用这种:
return list.Distinct(o => o.Id).ToList();//去重
public static class EnumerableExtender
{
public static IEnumerable<TSource> Distinct<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
var elementValue = keySelector(element);
if (seenKeys.Add(elementValue))
{
yield return element;
}
}
}
}
去除单一类型元素:
List<string> list = new List<string>();
list.Add("a");
list.Add("a");
list.Add("b");
list.Add("c");
list.Add("b");
list = list.Distinct().ToList();
扩展阅读:
Linq使用Distinct删除重复数据时如何指定所要依据的成员属性
C#去除List中集合的重复项(类型对象和单一类型)的更多相关文章
- Python 迭代删除重复项,集合删除重复项
1. 迭代删除重复项:先排序列表项,然后通过新迭代(not in)去除重复项,分片打印 def sanitize(time_string): if '-' in time_string: splitt ...
- python中剔除字典重复项,可以使用集合(set)。
使用集合(set)剔除字典中的重复项(value). 1)具体例子: #甲乙丙丁使用的编程语言programming_languages = { '甲':'java', '乙':'python', ' ...
- 【python cookbook】【数据结构与算法】10.从序列中移除重复项且保持元素间顺序不变
问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1.如果序列中的值时可哈希(hashable)的,可以通过使用集合和生成器解决.
- python经典面试算法题1.2:如何从无序链表中移除重复项
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.2 如何实现链表的逆序 [蚂蚁金服面试题] 难度系数:⭐⭐ ...
- DataTable中如何去除重复的项 (获得某个字段中的不重复项)
就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了思路以后在网上看了一些方法 ...
- leetcode 442. Find All Duplicates in an Array 查找数组中的所有重复项
https://leetcode.com/problems/find-all-duplicates-in-an-array/description/ 参考:http://www.cnblogs.com ...
- 去除reads中的pcr 重复,fastquniq
改编: python ~/tools2assemble/run_fastuniq.py SHT-3K-1_1.fq.gz SHT-3K-1_2.fq.gz 好像不支持gz文件,要先解压 http:// ...
- LINQ 查询集合总的重复项
select new FMDS_FarmPlotNewInfo { FarmPlo ...
- 在 Excel 中如何使用宏示例删除列表中的重复项
概要:在 Microsoft Excel 中,可以创建宏来删除列表中的重复项.也可以创建宏来比较两个列表,并删除第二个列表中那些也出现在第一个(主)列表中的项目.如果您想将两个列表合并在一起,或者如果 ...
随机推荐
- Git中的文件状态和使用
(暂存区 即Index In Git) commit 到 local respository的内容,不想push,则使用git reset 将文件状态回转到staged|modified|unstag ...
- ORACLE 查看数据库中有哪些表
SELECT TABLE_NAME FROM USER_TABLES ORDER BY TABLE_NAME;
- android SFC
本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教. 在开始Andr ...
- 解决tomcat默认45s启动超时的问题
进入工作空间目录下的.metadata\.plugins\org.eclipse.wst.server.core子目录,找到servers.xml文件,编辑它,找到start-timeout这一行,把 ...
- mysql start server faild
可能没卸载干净...在安装mysql数据库时,如果重新安装,很容易遇见apply security setting error,即在配置mysql启动服务时,在启动apply security set ...
- MongoDB条件查询
1.查询集合中的所有记录 db.users.find() { "_id" : ObjectId("528b1173613e3289197a6486"), &qu ...
- sizeof usage & big / little endian
http://blog.csdn.net/w57w57w57/article/details/6626840 http://people.cs.umass.edu/~verts/cs32/endian ...
- Android——inflate 将一个xml中定义的布局找出来
通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组 ...
- 安装office2013时弹出microsoft setup bootstrapper已停止工作,接着就不能安装了
只是说一下自己的解决方法: 我的原因是注册表没有删除改进. 1.输入regedit 2.找到HKEY_LOCAL_MACHINE\software\microsoft\windows\CurrentV ...
- 递归遍历XML节点属性和属性值
public static XmlDocument FileMergedIntoXML(string strXmlPathPublic) { string strXmlPathPublic = str ...