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
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
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
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
/// 对象比较
/// </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

参考文档:
使用EF+Linq或Sql存储过程获取报表数据优缺点分析|C/S开发框架
EFCore+LINQ 使用DebugView查看LINQ转译后的原生SQL|C/S开发框架
Winform开发框架 - 使用Linq判断日期时间范围查询条件的方法
.NET5 Core 关于LINQ查询使用DateDiff解决方案|C/S开发框架
C# LINQ基础-Linq基本使用方法-C/S开发框架
C# LINQ使用案例参考-C/S开发框架
LINQ 主从表查询:同时设置主表及明细表查询条件注意事项
达梦数据库使用DmBulkCopy批导数据解决方案|C/S开发框架
C# EF+LINQ 高性能Like语法|C/S开发框架
EFCore+Linq高效批量删除包含图片及大文本的数据两种性能对比|C/S开发框架
软件开发团队使用ERP系统快速开发框架的优势
使用HtmlAgilityPack.HtmlDocument彻底清除HTML标签-C/S开发框架
C# ASP.NET使用ashx一般处理程序实现上传文件功能-C/S开发框架
C#的Expression表达式使用方法-C/S开发框架
C# SharpMap的简单使用-C/S开发框架
C#使用Newtonsoft.Json.dll解析Json数据-C/S开发框架
使用EF+Linq或Sql存储过程获取报表数据优缺点分析|C/S开发框架
EFCore+LINQ 使用DebugView查看LINQ转译后的原生SQL|C/S开发框架
Winform开发框架 - 使用Linq判断日期时间范围查询条件的方法
.NET5 Core 关于LINQ查询使用DateDiff解决方案|C/S开发框架
C# LINQ基础-Linq基本使用方法-C/S开发框架
C# LINQ使用案例参考-C/S开发框架
LINQ 主从表查询:同时设置主表及明细表查询条件注意事项
达梦数据库使用DmBulkCopy批导数据解决方案|C/S开发框架
C# EF+LINQ 高性能Like语法|C/S开发框架
EFCore+Linq高效批量删除包含图片及大文本的数据两种性能对比|C/S开发框架
软件开发团队使用ERP系统快速开发框架的优势
使用HtmlAgilityPack.HtmlDocument彻底清除HTML标签-C/S开发框架
C# ASP.NET使用ashx一般处理程序实现上传文件功能-C/S开发框架
C#的Expression表达式使用方法-C/S开发框架
C# SharpMap的简单使用-C/S开发框架
C#使用Newtonsoft.Json.dll解析Json数据-C/S开发框架
其它资料:
什么是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内容管理系统 |
什么是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内容管理系统 |
在线客服
