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

《这个怎么查询出来?》

C#WinForm:System.Data.DataTablemyTable.;这个DataTable中有5列,每列都有10000条左右的数据ABCD
C# WinForm:

System.Data.DataTable myTable=....;

这个DataTable中有5列,每列都有10000条左右的数据

A  B  C  D  E

2  3  4  5  6

1  4  5  6  9

2  3  8  6  7

..................

要求C#从这个System.Data.DataTable中查找出这个表中A、B、C三列中(整体)的最大值和最小值

对应上面给的几行数据,结果就是:

Max  Min
8    1

请问该怎么查找出来? 

不要用循环比较的方法,因为每列都1W行左右呢。 用尽量少的语句,能一条搞定出结果的最好,谢谢。

12 个解决方案

#1


不是还有个9吗??
怎么最大的是8?

#2


你那table数据从哪里来的呢。。
如果是数据库的话不是有 min() max()这些就行了吗?

#3


回1楼:不是还有个9吗?? 
怎么最大的是8?
==================
 是A、B、C三列的最值,题目中说了"查找出这个表中A、B、C三列中(整体)的最大值和最小值"
 "整体"意思是将这三列看作一整体,而不是分别查每列的最值

----------------------------------------------------------------
回2楼:你那table数据从哪里来的呢。。 
=====================================
table数据源是个XML文档,这里没有真正的数据库连接的,所以只能在System.Data.DataTable中处理

#4


那你先看能不能每列拿出最大和最小,就只剩六个了,
然后再三列的六个来比较下了。。。

#5



DataTable dt = new DataTable();
                DataColumn dc = new DataColumn();
                dc.ColumnName = "A";
                dc.DataType = typeof(int);
                dt.Columns.Add(dc);
                dc = new DataColumn();
                dc.ColumnName = "B";
                dc.DataType = typeof(int);
                dt.Columns.Add(dc);
                dc = new DataColumn();
                dc.ColumnName = "C";
                dc.DataType = typeof(int);
                dt.Columns.Add(dc);

                DataRow dr = dt.NewRow();
                dr.ItemArray = new object[] { 2, 3, 4 };
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr.ItemArray = new object[] { 1, 4, 5 };
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr.ItemArray = new object[] { 2, 3, 8 };
                dt.Rows.Add(dr);

                object maxA = dt.Compute("Max(A)", "");
                object minA = dt.Compute("min(A)", "");

                object maxB = dt.Compute("Max(B)", "");
                object minB = dt.Compute("min(B)", "");

                object maxC = dt.Compute("Max(C)", "");
                object minC = dt.Compute("min(C)", "");

#6


然后你比较后面获取的对象就可以了,获取最大值和最小值

#7


5楼已给正确答案了

#8


呵呵  我原来就是用的5楼的方法 datatable.Compute()

现在我数据少,这个表只有5列还好,我以后还会有10列的呢

总不能都这样吧? 而且后面的比较还得写老长一段

有没有更好的方案

#9


下班前再顶一下!  希望帮忙啊  谢谢

#10




            ArrayList al = new ArrayList();
            DataTable dt = new DataTable();
            for (int i = 0; i++; i < dt.Rows.Count)
            {
                al.Add(dt.Rows[i]["A"].ToString().Trim());
                al.Add(dt.Rows[i]["B"].ToString().Trim());
                al.Add(dt.Rows[i]["C"].ToString().Trim());
            }
            al.Sort();
            MessageBox.Show(al[al.Count -1].ToString ());//最大值
            MessageBox.Show(al[0].ToString());//最小值


#11


引用 10 楼 forrest23 的回复:
C# code

            ArrayList al=new ArrayList();
            DataTable dt=new DataTable();for (int i=0; i++; i< dt.Rows.Count)
            {
                al.Add(dt.Rows[i]["A"].ToString().Trim());
                al.Add(dt.Rows[i]["B"].ToString().Trim());
                al.Add(dt.Rows[i]["C"].ToString().Trim());
            }
            al.Sort();
            MessageBox.Show(al[al.Count-1].ToString ());//最大值            MessageBox.Show(al[0].ToString());//最小值

UP

#12


10楼的处理 不错

推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • C#datatable序列化后整数带有小数点或者小数点变成整数原来datatable的列有个datatype属性,可以指定为int类型或者decimal类型的,如果指定int类型, ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
author-avatar
有激情才会实现梦想
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有