热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#自定义实体(类)List复杂实体(类)List的Compare,是否包含(Contains()),去重(Distinct())

对于简单数据类型的List,检查是否包含某个值,或去重可以直接使用List的方法Contains()或Distinct()。但是对于自定义实体(类)的List进行是否包含实体(Co

对于简单数据类型的List,检查是否包含某个值,或去重可以直接使用List的方法Contains()或Distinct()。

但是对于 自定义实体(类)的List 进行是否包含实体(Contains)的检查,或者去重(Distinct)操作时,直接使用Contains()或Distinct()方法是不能达到效果的。

此时需要我们定义一个专门处理当前自定义实体(类)的这些操作的一个类。为了方便起见,一般将这两个类(自定义的实体(类),处理这个自定义类的类) 放在一起(当然完全可以不放在一起,只要自己方便查找、管理即可)。

示例代码:

实体:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
namespace BusinessInvestment
{
///


/// 自定义实体
///

public class ContractProjIndustryTotalInvestDto
{
///
/// 行业
///

public string Industry { get; set; }
///
/// 行业名称
///

public string IndustryName { get; set; }
///
/// 总投资
///

public decimal? TotalInvest { get; set; }

}  
  
//用来处理 ContractProjIndustryTotalInvestDto 类的类,需要继承 IEqualityComparer接口,这个接口需要引用 System.Collections.Generic 命名空间
public class ContractProjIndustryTotalInvestDtoComparer : IEqualityComparer
{
public bool Equals(ContractProjIndustryTotalInvestDto x, ContractProjIndustryTotalInvestDto y)
{
if (x == null || y == null)
return false;
if (x.Industry == y.Industry && x.IndustryName==y.IndustryName)//自定义的比较的方法,这里就是核心了
return true;
else
return false;
}
public int GetHashCode(ContractProjIndustryTotalInvestDto obj)
{
if (obj == null)
return 0;
else
return obj.IndustryName.GetHashCode();
}
}
}

应用:

/* 省略部分代码 */
// originalDataList 为原始数据
List tempDataList = new List();
for (int i = 0; i )
{
var currentTempData = originalDataList[i];
//判断 tempDataList 列表是否包含当前循环的实体(Contains())
var isCOntains=tempDataList.Contains(currentTempData,new ContractProjIndustryTotalInvestDtoComparer());
if (!isContains)
{
/* 省略部分代码 */
tempDataList.Add(currentTempData);
/* 省略部分代码 */
}
}
//对 tempDataList 列表去重(Distinct())
var retData = tempDataList.Distinct(new ContractProjIndustryTotalInvestDtoComparer()).ToList();
/* 省略部分代码 */

 

斩后知



推荐阅读
author-avatar
书友66421539
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有