Linq实现DaTaTable或者List里面数据值不重复

C# DataTable分组汇总实战:从Compute到LINQ的完整方案对比 在数据处理与报表开发中,分组汇总是核心的数据聚合操作,其原理是通过特定字段将数据集划分为多个子集,然后对每个子集应用聚合函数(如Sum、Avg、Count)进行计算。这项技术对于数据分析和业务统计至关重要,能够高效地从海量数据中提取关键信息。在C#生态中,DataTable作为内存数据表的代表,广泛用于数据暂存与处理,但其原生缺乏直接的GroupBy方法,这成为开发中的常见痛点。本文深入探讨了DataTable分组汇总的三种主流方案:基于Compute方法的SQL式聚合、利用LINQ to DataSet的 阅读详情

在回答论坛有个某列不重复的值为条件获取数据的问题,而记录下来。

问题:源地址:http://bbs.youkuaiyun.com/topics/390887849?page=1#post-398200802

id  proname  brandid  guigecategoryid
1      abc            5              16
2      bbb            5              16
3      adc            7               3
4      aac            9               7


字段 (guigecategoryid)中 值去掉重复值,想得到结果如下
id  proname  brandid  guigecategoryid
1      abc            5              16
3      adc            7               3
4      aac            9               7

注意:得到的是一个结果集,有多列存在,不是仅仅对一列筛选
可以用dataview.totable()
可以用linq to sql
可以用distinct

List为数据源的解决方法:

  List<Test> getlst = new List<Test>
			   {
					new Test(){id=1,proname="abc",brandid=5,guigecategoryid=16},
					new Test(){id=2,proname="bbb",brandid=5,guigecategoryid=16},
					new Test(){id=3,proname="adc",brandid=7,guigecategoryid=3},
					new Test(){id=4,proname="aac",brandid=9,guigecategoryid=7},
			   };
			   var result = getlst.GroupBy(x => x.guigecategoryid).Select(x => x.First()).ToList();
 public class Test
     {
          public int id { get; set; }
          public string proname { get; set; }
          public int brandid { get; set; }
          public int guigecategoryid { get; set; }  
     } 
得到

id  proname  brandid  guigecategoryid
1      abc            5              16
3      adc            7               3
4      aac            9                7

DataTable为数据源的解决方法

 DataTable dt = new DataTable();
			   dt.Columns.AddRange(new DataColumn[]{  
		           new DataColumn("id", Type.GetType("System.Int32")),  
		           new DataColumn("proname", Type.GetType("System.String")),  
			   new DataColumn("brandid", Type.GetType("System.Int32")),  
			   new DataColumn("guigecategoryid", 
                           Type.GetType("System.Int32")),  
				  });
			   dt.Rows.Add(1, "abc", 5, 16);
			   dt.Rows.Add(2, "bbb", 5, 16);
			   dt.Rows.Add(3, "adc", 7, 3);
			   dt.Rows.Add(4, "aac", 9, 7);
			   var result1 = dt.AsEnumerable().GroupBy(x => 
x.Field<Int32>("guigecategoryid")).Select(x => x.First()).ToList();

			   var result2 = from p in dt.AsEnumerable().GroupBy(x =>
x.Field<Int32>("guigecategoryid")).Select(xx => xx.FirstOrDefault()).ToList() 
select p;

得到

id  proname  brandid  guigecategoryid

1      abc            5              16
3      adc            7               3
4      aac            9              
7
   

 


C# DataTable内存分组汇总:从基础循环到LINQ与性能优化 在数据处理与业务开发中,内存数据分组与聚合是常见且核心的操作,尤其在无法直接依赖数据库查询的场景下。其原理通常基于哈希表(如Dictionary)构建分组容器,通过遍历数据行、提取分组键、执行聚合计算(如Sum、Average)来完成。这一技术对于实现离线报表生成、多源数据整合及实时分析具有重要价值,能显著提升应用的数据处理能力与灵活性。在C#生态中,DataTable作为承载结构化数据的经典容器,其原生缺乏GroupBy支持成为许多开发者的痛点。本文聚焦DataTable内存分组,深入探讨手工循环、LIN 阅读详情

相关推荐

你知道表也能进行加减运算吗?

上一篇我们介绍了 SQL 中各种形式的子查询,以及与子查询相关的 IN、ALL、ANY/SOME、EXISTS 运算符。 我们已经学习了两种涉及多个表的查询语句,今天我们来讨论另一种从多个查询中返回组合结果的方法:集合运算。 集合运算 数据库中的表与集合理论中的集合非常类似,表是由行组成的集合。因此, SQL 支持基于行的各种集合操作:并集运算(UNION)、交集运算(INTERSECT)和差集运...

Tony.Dong的专栏 1135

【C#】Linq 把两个结果集中重复的数据去掉,保留差异值

前言 在项目中很多时候

光影8号的专栏 1380

DeepSeek Harness桌面版安装教程:从零配置到实用插件推荐

在AI编程工具逐步普及的今天,开发者越来越关注如何将大模型能力无缝融入日常编码流程。这类工具的核心在于构建一个连接模型服务与本地开发环境的中间层,通过项目级上下文理解、终端指令执行和插件机制,让AI真正成为能动手干活的编程副驾驶。安装配置过程中,环境准备、模型服务连接与工具权限设置是三个关键环节。完成基础搭建后,选择合适的插件能显著提升代码质量与问题排查效率,例如基于代码审查的规范对齐和安全扫描,以及面向运行时日志关联分析与性能告警的诊断工具。本文以DeepSeek Harness桌面版为例,从环境自查、安

weixin_31286719的博客 312

linq 获取不重复数据,重复数据 var unique = arr.GroupBy(o => o).Where(g => g.Count() == 1) .Select(g => g.Element...

static void Main(string[] args) { int[] arr = { 1, 3, 3, 3, 3, 4, 5, 4, 5, 8, 9, 3 }; //不重复 var unique = arr.GroupBy(o => o).Where(g => g.Count() ...

david9779的博客 547

FOC实战笔记:RC吸收电路的设计考量与参数调优

本文深入探讨了FOC驱动器中RC吸收电路的设计与调优。针对MOS管开关过程中的电压尖峰问题,详细阐述了RC电路的钳位与能量吸收原理,并提供了从参数计算、实验调试到布局布线的完整实战指南,旨在帮助工程师有效提升系统可靠性与稳定性。

weixin_29219539的博客 273

PCB布线避坑指南:为什么你的差分线等长总调不好?AD19蛇形等长技巧详解

本文详细解析了AD19环境下PCB差分线等长调整的核心技巧与常见问题。从差分信号等长的底层逻辑到AD19规则配置,再到蛇形等长高级技巧和信号完整性验证,帮助工程师解决差分线等长调整中的难题,提升高速PCB设计的信号质量。

weixin_28738397的博客 383

C#linq计算总条数并去重复的写法

一,在实际需求中我们会存在选出了一个集合,而这时我们需要通过集合的某几个字段来计算重复,和统计重复的数量,这时我们可以用到linq来筛选和去重复。 二,如下代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Thread...

dcujcivw769565的博客 502

UE4 - 河流流体插件Fluid Flux

Fluid Flux可以模拟一定区域内的流体效果,由于使用顶视图所Capture的Heightfield信息,所以只支持室外开阔场景,不支持洞穴等室内场景;

GT的虚幻引擎文档 6667

C# linq 使用Groupby lamda 获取非重复数据

var bookkeeperlist = await db.Bookkeeper.Where(a => a.AgentUserId == userId && a.ServiceItem == 1).GroupBy(b => b.BasicUserId).Select(a => new MyServicesListViewModel() ...

weixin_30521649的博客 644

GPS数据处理必备:IGS精密星历下载与使用全攻略(附武汉大学/CDDIS/CODE/GFZ地址)

本文为GPS/GNSS数据处理者提供了IGS精密星历的完整下载与使用指南。详细解析了最终、快速、超快速三种精密星历产品的区别与选择策略,并手把手教学如何从武汉大学、CDDIS、CODE、GFZ四大主流数据中心高效获取数据,涵盖文件命名规则解析及自动化下载脚本,助力科研与工程应用。

weixin_29234239的博客 683

YOLOv11 模型改进:利用新型损失函数实现精度跃升(含代码全解析)

在目标检测领域,损失函数的选择直接决定模型的精度上限。某自动驾驶公司将 YOLOv11 原有损失替换为新型损失后,障碍物检测 mAP 提升 10%,夜间场景误检率降低 22%;某物流分拣项目中,采用新损失的 YOLOv11 模型对小包裹的识别准确率从 82% 升至 96%。如果你也在为模型精度瓶颈、样本不平衡问题困扰,这篇教程将带你掌握 YOLOv11 损失函数的进阶技巧,真正帮你在检测性能上实现突破。损失函数是模型训练的“指南针”,它定义了模型“学习的方向”。传统损失(如 BCE、Focal Loss)在

m0_71589036的博客 714

技术图文:如何实现 DataTable 与模型类 List 的相互转换?

通常情况下,我们在做工程项目的时候,需要把待处理的数据存储在数据库中。 通过 SQL 的 Select 语句很容易把查询的结果以 DataTable 的方式得到,但在对 DateTable 中的数据进行进一步的检索时远远没有模型类 List<T> 方便。 所以,在做工程项目时,会把查询到的 DataTable 转化成模型类 List<T>, 处理完毕后如果有所改动则把这个模...

老马的程序人生 3409

171、运动控制中的标定:摩擦力与死区补偿标定

摘要(149字) 运动控制系统中的摩擦力与死区补偿是提升精度的关键。摩擦力分为静摩擦、库仑摩擦和粘滞摩擦,其中Stribeck效应是低速抖动的主因;死区则表现为控制信号的无效区间。有效标定方法包括恒速测试(摩擦力)和斜坡响应法(死区)。补偿策略需采用分段前馈和动态调整,避免过度补偿导致振荡。实践中要注意机械状态检查、补偿量限幅,并定期重新标定。硬件升级配合算法补偿才能实现最优控制,标定工作应优先于PID参数调整。

m0_50546716的博客 229

DataTable,List去重复记录的方法

<br />List<OUTP_DRUGITEM> LDrugitem_all = query1.ToList(); OrderDrugitem_yp = LDrugitem_all.Distinct(new Comparint()).ToList();//DISTINCT /// <summary> /// LINQEntityDistinct显示字段唯一值记录 /// </summary> inte

snzy521的专栏 2930

深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能

大家好,我是微学AI,今天给大家介绍一下深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能。在去年ChatGPT的发布后,各种国内外的大语言模型层出不穷涌现,但是大家都知道现在的模型的诟病的数学能力不足,就算是简单的数学题都可能算错,今天我就来给大家引入MathGPT的模型,用来解决GPT解决数学问题,对于简单的初中数学高中数学都可以解决,让数学问题精准答题得到实现。

微学AI的博客 1649

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

DataTable,List,Dictonary互转,筛选及相关写法

1.创建自定义DataTable /// 创建自定义DataTable(一) 根据列名字符串数组, /// </summary> /// <param name="sList">列名字符串数组</param> /// <returns>DataTable</returns> public static Dat...

aiquan6271的博客 414

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LinQ使用积累

1. 用Linq查询datatable中的行是否重复intcount1 = (from p indt.AsEnumerable() select p).Distinct().Count();intcount2 = (from p indt.AsEnumerable() select p).Count();if(count1 < count2){  MessageBox.Show("...

dme66590的博客 185

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C# List,DataTable 去除重复

public static IEnumerable&lt;T&gt; RemovalRepetition&lt;T, R&gt;(this IEnumerable&lt;T&gt; obj, Func&lt;T, R&gt; attribute) { return obj.Cast&lt;T&gt;().GroupBy(attribute).Select(...

dy_Model的博客 553

泛型类List<Model>和 DataTable的分组统计

项目中在经常会对数据解析并做图标展示,数据获取的方式有很多(文本文件、api、数据库……),大多数情况下我们都会将数据转化为泛型类List或者DataTable两种数据类型并做处理,并绑定在UI界面做各种炫酷的展示,下面我们讲讲这泛型类List和DataTable两种数据源的数据处理吧。 ...

fengzhilu000【u012761373】 671

DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法

DataTable分组统计: 1、用两层循环计算,前提条件是数据已经按分组的列排好序的。 DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)), ...

weixin_30325793的博客 1166

c# Linq及Lambda表达式应用经验之 GroupBy 分组 count ,排序

引用:http://www.cnblogs.com/han1982/p/4138163.html 示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Nam 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.DataSetExtensions public partial clas...

weixin_30716141的博客 3952

从Sharepoint的List中获取不重复的item

比如有这么一个表格叫做Movies Movie Year ----- ---- Fight Club 1999 The Matrix 1999 Pulp Fiction 1994 用CAML删选出去年重复的年份,剩下1999,1994绑定到Dropdown Control 由于CAML不能去除重复,只能全部删选出来后,利...

weixin_30883777的博客 150

DataTable过滤处理

构建一个datatable: DataTable dt = new DataTable(); dt.Columns.Add("customid"); for (int i = 0; i < 10; i++) { DataRow dr = dt.NewRow();

每天进步一点点 4841
上一篇: C#+Aspose.Cells 导出Excel及设置样式 (Webform/Winform)
下一篇: 利用Aspose.Cells和Excel模板导出复杂的统计数据
蝶恋花雨
博客等级 码龄21年 1290粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值