原来DataTable的Distinct竟如此简单!

DataView可以帮我们直接获取Distinct数据,

DataTable dataTable;DataView dataView = dataTable.DefaultView;

DataTable dataTableDistinct = dataView.ToTable(true,"FieldName1","FieldName2","...");

//注:其中ToTable()的第一个参数为是否DISTINCT

DataTable MyTable = ds.Tables[2]; //ds为数据集

DataTable dtClone = MyTable.Clone();  //创建新表
DataView dv = new DataView(dtClone);  //用于查找
dv.Sort = "Item";
foreach(DataRow dr in MyTable.Rows)   //单循环, 效率高一点
{
  int rowIndex = dv.FindRow(dr["Item"]);
  if (rowIndex == -1)
  {
    dtClone.ImportRow(dr);  //添加行
    dtClone.Rows[dtClone.Rows - 1]
["Quantity"] = (decimal)MyTable.Compute("Sum(Quantity)", string.Format("Item = ‘{0}‘", dr["Item"].ToString());
//合计
  }
}
dtClone.AcceptChanges();

ds.Tables.Remove(MyTable);  //删除旧表
ds.Tables.Add(dtClone);     //添加新表

dtClone.Rows[dtClone.Rows.Count - 1] ["Quantity"] = (decimal)MyTable.Compute("Sum(Quantity)", string.Format("Item = ‘{0}‘", dr["Item"].ToString()); //合计

时间: 2024-12-06 20:51:42

原来DataTable的Distinct竟如此简单!的相关文章

C# DataTable的Distinct解决方案及表的复制

DataTable的Distinct DataTable dataTable; DataView dataView = dataTable.DefaultView; DataTable dataTableDistinct = dataView.ToTable(true,"FieldName1","FieldName2","...");//注:其中ToTable()的第一个参数为是否DISTINCT DataTable 表的复制 DataTable

DataTable的Distinct!!!

有时我们需要从DataTable中抽取Distinct数据,以前总是以对DataTable进行foreach之类纯手工方式获取. 近来发现DataView可以帮我们直接获取Distinct数据 DataTable dataTable; DataView dataView = dataTable.DefaultView; DataTable dataTableDistinct = dataView.ToTable(true,"FieldName1","FieldName2&qu

DataTable 中Distinct操作

DataTable dt = ds.Tables[0]; DataView dataView = dt.DefaultView; DataTable dtDistinct = dataView.ToTable(true, "GC002_UserID", "GC002_UserName","字段3","字段3","字段5");//DataTable根据 UserID去掉重复的//ToTable中最终填写的的字

用它来开发“在线Excel”系统,竟如此简单!

最近关注到"知乎"上的一个热门问题:国内有哪些类似 Google Docs 的在线文档编辑软件?大家的回复基本上都是围绕成熟的在线文档编辑软件展开,如石墨文档.腾讯文档.有道云协作等,其中每一款软件都有其最适合的使用场景,有些注重数据存储和数据安全,有些则注重团队管理和文档协作,对于最终用户来说,市面上各类成熟的在线文档编辑软件产品种类繁多,但只有最适合业务需求的那一款才是最好的. 针对不同的业务需求,用户关注的方向也有很大区别: 大型公司更加注重数据安全.协作效率,与原系统文档兼容性

大屏联动竟如此简单???

在迅猛发展的信息时代,大屏展示已经广泛应用于通讯.电力.军队指挥机构, 在提供共享信息.决策支持.态势显示等方面发挥着重要作用.在这些光鲜.绚丽.庞大的解决方案背后,其实是由一个个小而又实用的技术细节实现来支撑的,比如:大屏组件间的联动 对的,你是不是已经知道接下来小编要介绍些什么了,那我们就开始吧 小编今天就是要带大家 get 一下[润乾报表]中怎样轻松搞定大屏组件间的联动效果.实例效果图如下所示: 当我们点击地图中某个的地区时,右侧仪表盘和柱形图随之对应显示该地区的数据值. 小伙伴们,注意啦

Java14来了!Switch竟如此简单?Lombok也不需要了?来用Idea搭建Java14吧!

Java 14 在 2020.3.17 日发布正式版了,但现在很多公司还在使用 Java 7 或 Java 8,每当看到 Java 又发布新版本心里就慌得一匹.不过此版本并不是 LTS (长期支持版) 版本,所以不要慌,我们先来了解一下好了,等 LTS 版本发布后再用也不迟. 版本说明 现在 Java 的发布节奏是每年发布两个 GA (General Availability,正式发布版),每 6 个月发布一版,发布月份为 3 月和 9月. Oracle 只对 LTS 版本提供付费支持,其中包括

Select Distinct Rows from DataTable

Select Distinct Rows from DataTable ' True=distinct Dim table As DataTable = Me.SP3DPIA2014R1DataSet.SP3DPIA.AsDataView.ToTable(True, "ShortName") Sp3dpiareflection.sln

DataTable中如何去除重复的项【转】

上周在项目中遇到一个问题,就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了思路以后在网上看了一些方法,大都是遍历之类的,虽说功能是可以实现,但是效率太低了,最后发现了一个简单的方法,如下: public string[] GetNamesFromDataTable(DataTable dataTable)        {            DataView dv =

项目中遇到的 linq datatable select

1如何使用DataTable.Select选出来的Rows生成新的DataTable?DataTable dt = 数据源;DataTable dtt = new DataTable();dtt=dt.Clone();//拷贝框架DataRow[] dr = dt.select("条件");for(int i=0;i<dr.length;i++){dtt.ImportRow((DataRow)dr[i]);}this.DataGrid.DataSource=dtt;this.Da