C# LINQ使用Distinct方法检查对象某个属性的值是否重复
C# LINQ使用Distinct方法检查对象某个属性的值是否重复
方案一:采用GroupBy方式, Count()>1为重复对象 C# Code: List<tb_TablesDetail> list = gcStuct.DataSource as List<tb_TablesDetail>; var query = list.GroupBy(x => x.FieldName.ToUpper())//区分大小写,转换为大写 .Where(g => g.Count() > 1) .Select(y => y.Key) .ToList(); if (query.Count>0) { var strFields = String.Join(",", query.ToArray());//连接重复的字段 Msg.Warning($"字段名<{strFields}>重复,请检查!"); return; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 方案二:采用Distinct方式,然后比较对象数量是否一致 C# Code: List<tb_TablesDetail> list = gcStuct.DataSource as List<tb_TablesDetail>; var fields = list.Select(a => a.FieldName).Distinct(); if (fields.Count() != list.Count) { Msg.Warning("字段名称重复,请检查!"); return; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 方案三:采用Distinct方法,自定义比较对象的模型与算法 C# Code: //LINQ使用Distinct方法检查对象某个属性的值是否重复 var q = list.Distinct(new DataCompareModel()); if (q.Count() < list.Count) { string msg = "{\"status\":0, \"msg\":\"字段名称有重复,请检查!\"}"; context.Response.Write(msg); return; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 C# Code: /// <summary> /// 对象比较 /// </summary> public class DataCompareModel : IEqualityComparer<libs.ExcelDataModel> { public bool Equals(libs.ExcelDataModel x, libs.ExcelDataModel y) { return x.FieldName.CompareTo(y.FieldName) == 0; } public int GetHashCode(libs.ExcelDataModel obj) { return this.GetHashCode(); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 扫一扫加微信
参考文档:
C#多线程处理多个队列的数据(交叉线程访问及Invoke方法使用) C# Barcode条码控件使用方法 详述IComparer,IComparable接口,实现自定义方法比较对象大小并排序(C#) C#使用DataBindings属性绑定不同类型的数据源 C#.Net组件开发 - 设计时使用自定义属性编辑器持久化对象 标签:C#.Net组件开发 - 自定义设计器持久化对象的属性 标签:C#.Net组件开发 - 自定义属性编辑器持久化对象的属性 C# GridView 资料行数据检查使用的方法(ValidateRow与InvalidRowException) 对象的属性若使用get;set;访问器没有指定成员变量,代码混淆后会丢失数据 C#.NET 对象(字符串)转换常用扩展方法 C#.NET扩展的动态对象支持动态属性和方法以及Json格式与对象互转 C#.NET 定义动态对象dynamic以及属性和方法 检查Datatable表指定字段的值是否重复|C/S框架网 【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆 C#类扩展方法,字符串对象转换,常用扩展方法StringExtensions
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |