当前位置: 首页 > news >正文

C#获取DataTable的前N行数据然后按指定字段排序

获取DataTable的前N行数据然后按指定字段排序

可以使用以下三种代码:

第一种:使用Linq

DataTable dtLast = dataTable.AsEnumerable().Take(count).OrderBy(dataRow => Convert.ToInt32(dataRow["Sequence"])).CopyToDataTable();

第二种:使用默认视图的Sort属性:

            DataTable dtLast = dataTable.AsEnumerable().Take(count).CopyToDataTable();dtLast.DefaultView.Sort = "Sequence asc";//逆序为Sequence descdtLast = dtLast.DefaultView.ToTable();

第三种:使用循环迭代

            DataTable dtLast = dataTable.Clone();//克隆表结构,行数为0for (int i = 0; i < getCount; i++){dtLast.Rows.Add(dataTable.Rows[i].ItemArray);}//按照Sequence进行排序DataRow[] array = dtLast.Select("1=1", "Sequence");dtLast = array.CopyToDataTable();

整体测试程序如下:

控制台应用程序FilterDataTableDemo

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace FilterDataTableDemo
{class Program{static void Main(string[] args){int topCount = 5;DataTable dataTable = GetDataTable();PrintDataTable(dataTable);Console.WriteLine($"----------【使用Linq】打印DataTable的前【{topCount}】行并按Sequence顺序排序----------");DataTable dtLinq = GetTopDataAndOrderUseLinq(dataTable, topCount);PrintDataTable(dtLinq);Console.WriteLine($"--------【使用视图View】打印DataTable的前【{topCount}】行并按Sequence顺序排序--------");DataTable dtView = GetTopDataAndOrderUseView(dataTable, topCount);PrintDataTable(dtView);Console.WriteLine($"--------【使用循环迭代】打印DataTable的前【{topCount}】行并按Sequence顺序排序--------");DataTable dtIterator = GetTopDataAndOrderUseIterator(dataTable, topCount);PrintDataTable(dtIterator);Console.ReadLine();}/// <summary>/// 使用Linq获取前N行数据并排序/// </summary>/// <param name="dataTable"></param>/// <param name="count"></param>/// <returns></returns>static DataTable GetTopDataAndOrderUseLinq(DataTable dataTable, int count) {DataTable dtLast = dataTable.AsEnumerable().Take(count).OrderBy(dataRow => Convert.ToInt32(dataRow["Sequence"])).CopyToDataTable();return dtLast;}/// <summary>/// 使用视图的默认排序/// </summary>/// <param name="dataTable"></param>/// <param name="count"></param>/// <returns></returns>static DataTable GetTopDataAndOrderUseView(DataTable dataTable, int count){DataTable dtLast = dataTable.AsEnumerable().Take(count).CopyToDataTable();dtLast.DefaultView.Sort = "Sequence asc";//逆序为Sequence descdtLast = dtLast.DefaultView.ToTable();return dtLast;}/// <summary>/// 使用循环迭代获取前N行数据并排序/// </summary>/// <param name="dataTable"></param>/// <param name="count"></param>/// <returns></returns>static DataTable GetTopDataAndOrderUseIterator(DataTable dataTable, int count){//考虑到 获取的行数比数据表本身的行数还要多,这里取较小值int getCount = Math.Min(dataTable.Rows.Count, count);DataTable dtLast = dataTable.Clone();//克隆表结构,行数为0for (int i = 0; i < getCount; i++){dtLast.Rows.Add(dataTable.Rows[i].ItemArray);}//按照Sequence进行排序DataRow[] array = dtLast.Select("1=1", "Sequence");dtLast = array.CopyToDataTable();return dtLast;}/// <summary>/// 生成测试内存表/// </summary>/// <returns></returns>static DataTable GetDataTable() {DataTable dt = new DataTable("Test");dt.Columns.Add("CoreId", typeof(int));dt.Columns.Add("Sequence", typeof(int));dt.Columns.Add("TestName", typeof(string));dt.Rows.Add(10, 5, "云天河");dt.Rows.Add(9, 4, "柳梦璃");dt.Rows.Add(8, 3, "韩菱纱");dt.Rows.Add(7, 2, "慕容紫英");dt.Rows.Add(6, 1, "璇玑");dt.Rows.Add(5, 5, "怀朔");dt.Rows.Add(4, 4, "云天青");dt.Rows.Add(3, 3, "夙玉");dt.Rows.Add(2, 2, "夙瑶");dt.Rows.Add(1, 1, "玄霄");return dt;}/// <summary>/// 打印内存数据表信息/// </summary>/// <param name="dataTable"></param>static void PrintDataTable(DataTable dataTable) {for (int i = 0; i < dataTable.Rows.Count; i++){Console.WriteLine(string.Join(",", dataTable.Rows[i].ItemArray));}}}
}

程序运行如图:

 

相关文章:

C#获取DataTable的前N行数据然后按指定字段排序

获取DataTable的前N行数据然后按指定字段排序 可以使用以下三种代码&#xff1a; 第一种&#xff1a;使用Linq DataTable dtLast dataTable.AsEnumerable().Take(count).OrderBy(dataRow > Convert.ToInt32(dataRow["Sequence"])).CopyToDataTable(); 第二种…...

Swift 中的动态成员查找

文章目录 前言基础介绍基础示例1. 定义一个动态成员访问类&#xff1a;2. 访问嵌套动态成员&#xff1a; 使用 KeyPath 的编译时安全性KeyPath 用法示例KeyPath 进阶使用示例1. 动态访问属性&#xff1a;2. 结合可选属性和 KeyPath&#xff1a;3. 动态 KeyPath 和字典&#xff…...

leetcode做题笔记102. 二叉树的层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 思路一&#xff1a;递归 int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){int** ans(int**)mal…...

python编写四画面同时播放swap视频

当代技术让我们能够创建各种有趣和实用的应用程序。在本篇博客中&#xff0c;我们将探索一个基于wxPython和OpenCV的四路视频播放器应用程序。这个应用程序可以同时播放四个视频文件&#xff0c;并将它们显示在一个GUI界面中。 C:\pythoncode\new\smetimeplaymp4.py 准备工作…...

用XSIBackup为VMware ESXi打造完美备份方案

文章目录 VMware ESXi 备份方案引言XSIBackup安装步骤1. XSIBackup软件安装2. SSH连接3. 定位到xsibackup目录4. 修改文件权限5. 安装cron查看crontab列表6. 配置备份任务结论VMware ESXi 备份方案 引言 数据就像是我们的生命线,一旦丢失,可能会带来无法挽回的损失。对于那…...

React 项目中引入msal验证以及部分报错处理

功能实现 如何在React 项目中引入msal身份验证&#xff0c; 微软在官网有提供文档支持&#xff0c;文档包含示例和具体使用的教程&#xff0c;地址如下&#xff1a; https://learn.microsoft.com/zh-cn/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal 照着文…...

Unity3D 2021 使用 SharpZipLib 遇到的安卓打包 I18N 相关问题

在 Unity3D 中&#xff0c;使用 ICSharpCode.SharpZipLib.dll 来做压缩和解压缩&#xff0c;但打包安卓后遇到问题&#xff0c;原因是字符编码程序集被裁减掉了导致。 根据网上搜索&#xff0c;将 UnityEditor 对应目录下的 I18N开头的&#xff0c;比如 I18N.CJK.dll 等系列文…...

软件工程(十五) 行为型设计模式(一)

1、责任链模式 简要说明 通过多个对象处理的请求,减少请求的发送者与接收者之间的耦合。将接受对象链接起来,在链中传递请求,直到有一个对象处理这个请求。 速记关键字 传递职责 类图如下 由类图可以比较容易的看出来,其实就是自己关联自己,形成了一个链,并且自己有…...

【校招VIP】前端算法考点之快慢指针题型

考点介绍&#xff1a; 链表是校招面试里手撕代码出现频度比较高的题型&#xff0c;三线和中小厂会考察简单的链表反转&#xff0c;大厂会进一步考察复杂度和双指针问题&#xff0c;比如中间元素、是否存在环等。 『前端算法考点之快慢指针题型』相关题目及解析内容可点击文章末…...

Docker基础入门:容器数据卷与Dockerfile构建镜像(发布)

Docker基础入门&#xff1a;容器数据卷与Dockerfile构建镜像&#xff08;发布&#xff09; 一、docker容器数据卷1.1、使用docker容器数据卷1.2、具名挂载、匿名挂载1.3、如何确定是具名挂载还是匿名挂载 二、使用dockerfile2.1 初识Dockerfile2.2 Dockerfile构建过程2.3 Docke…...

部署问题集合(二十一)从零开始搭建一台NAS服务器(Linux虚拟机)

前言 因工作需要&#xff0c;需要从零通过虚拟机搭建一台NAS服务器&#xff0c;以此记录下来 步骤 1、创建虚拟机 通过VMWare创建一台新虚拟机&#xff0c;虚拟机内存和磁盘自定义&#xff0c;不过建议尽量大一点 2、服务器端配置 查看是否安装有NFS服务&#xff1a;rpm …...

Git小白入门——了解分布式版本管理和安装

Git是什么&#xff1f; Git是目前世界上最先进的分布式版本控制系统&#xff08;没有之一&#xff09; 什么是版本控制系统&#xff1f; 程序员开发过程中&#xff0c;对于每次开发对各种文件的修改、增加、删除&#xff0c;达到预期阶段的一个快照就叫做一个版本。 如果有一…...

芯科科技宣布推出下一代暨第三代无线开发平台,打造更智能、更高效的物联网

第三代平台中的人工智能/机器学习引擎可将性能提升100倍以上 Simplicity Studio 6软件开发工具包通过新的开发环境将开发人员带向第三代平台 中国&#xff0c;北京 - 2023年8月22日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&…...

无涯教程-Android - Intents/Filters

Android Intent 是要执行的操作的抽象描述。它可以与 startActivity 一起启动Activity&#xff0c;将 broadcastIntent 发送给任何BroadcastReceiver组件&#xff0c;并与 startService(Intent)或 bindService(Intent&#xff0c;ServiceConnection&#xff0c;int)与后台服务进…...

NFTScan 正式上线 Base NFTScan 浏览器和 NFT API 数据服务

2023 年 8 月 24 号&#xff0c;NFTScan 团队正式对外发布了 Base NFTScan 基础设施&#xff0c;将为 Base 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。NFTScan 作为全球领先的 NFT 数据基础设施服务商&#xff0c;Base 是继 Bitcoin、Ethereum、BNBChain、…...

【Git】测试持续集成——Git+Gitee+PyCharm

文章目录 概述一、使用Gitee1. 注册账号2. 绑定邮箱3. 新建仓库4. 查看项目地址 二、安装配置Git1. 下载安装包2. 校验是否安装成功。3. 配置Git4. Git命令5. Git实操 三、PyCharmGit1. 配置Git2. Clone项目3. 提交文件到服务器4. 从服务器拉取文件 概述 持续集成&#xff08;…...

《HelloGitHub》第 89 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …...

多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比

多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比 模型…...

c语言每日一练(12)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…...

用AI + Milvus Cloud搭建着装搭配推荐系统

在上一篇文章中,我们学习了如何利用人工智能技术(例如开源 AI 向量数据库 Milvus Cloud 和 Hugging Face 模型)寻找与自己穿搭风格相似的明星。在这篇文章中,我们将进一步介绍如何通过对上篇文章中的项目代码稍作修改,获得更详细和准确的结果,文末附赠彩蛋。 注:试用此…...

41、springboot 整合 FreeMarker 模版技术

springboot 整合 FreeMarker 模版技术 ★ 整合FreeMarker的自动配置&#xff1a; FreeMarkerAutoConfiguration&#xff1a;负责整合Spring容器和获取FreeMarkerProperties加载的配置信息。FreeMarkerServletWebConfiguration/FreeMarkerReactiveWebConfiguration&#xff1a…...

每天 26,315 美元罚款?交通安全局要求特斯拉提供 Autopilot数据

根据美国国家公路交通安全管理局&#xff08;NHTSA&#xff09;最近的特别命令&#xff0c;特斯拉公司被要求提供关于其自动驾驶功能Autopilot的相关信息。这一命令是继NHTSA于2021年8月启动初步评估后&#xff0c;在2022年6月升级为正式调查的一部分&#xff0c;NHTSA近期对特…...

3d激光slam建图与定位(2)_aloam代码阅读

1.常用的几种loam算法 aloam 纯激光 lego_loam 纯激光 去除了地面 lio_sam imu激光紧耦合 lvi_sam 激光视觉 2.代码思路 2.1.特征点提取scanRegistration.cpp&#xff0c;这个文件的目的是为了根据曲率提取4种特征点和对当前点云进行预处理 输入是雷达点云话题 输出是 4种特征点…...

Java 8 新特性——Lambda 表达式(2)

一、Java Stream API Java Stream函数式编程接口最初在Java 8中引入&#xff0c;并且与 lambda 一起成为Java开发里程碑式的功能特性&#xff0c;它极大的方便了开放人员处理集合类数据的效率。 Java Stream就是一个数据流经的管道&#xff0c;并且在管道中对数据进行操作&…...

MES管理系统中常用的数据模型有哪些

在MES管理系统项目中&#xff0c;数据建模对于生产过程的监控、分析和管理具有至关重要的作用。本文将介绍一些常见的MES管理系统数据建模方面&#xff0c;并阐述它们在生产过程中的重要性和应用。 1、产品数据模型是MES系统中的基础模块之一。它涵盖了产品的基本信息、规格和属…...

ARM DIY(三)板载串口和 LCD 调试

前言 今天焊接两大关键输入输出设备&#xff1a;串口和屏幕。 串口 串口部分使用 CP2102N 芯片&#xff08;USB 转 TTL&#xff09;&#xff0c;这样用一根数据线连接板子和 PC 就可以直接调试了。 焊接 CP2102 和 Type C 上电调试&#xff0c;串口可以正常输入输出。 看来…...

计算机网络-笔记-第一章-计算机网络概述

目录 一、第一章——计算机网络概述 1、因特网概述 &#xff08;1&#xff09;网络、互联网、因特网 &#xff08;2&#xff09;因特网发展的三个阶段 &#xff08;3&#xff09;因特网服务的提供者&#xff08;ISP&#xff09; &#xff08;4&#xff09;因特网标准化工…...

Oracle-day4:分组查询(带条件)、DDL建表、约束、主从表

一、内容回顾 /*------------------内容回顾------------------------上周内容回顾--1、单表的基础查询--A、select * from emp;--B、列的运算 --数字类型运算 - * /--函数运算 mod ceil floor round upper lower--C、取别名--列、表达书取别名--*表示所有的列和列同时存在时…...

(详解)数据结构-----------栈与队列 c语言实现

本章将会详细讲解以下知识点&#xff1a; 目录 一&#xff1a;栈 1&#xff1a;栈的定义&#xff0c;栈的特点 2&#xff1a;用什么结构来实现栈与原因的分析? 3: (超详解)栈的常用接口并且附上测试用例 二:队列 1:队列的定义&#xff0c;队列的特点 2&#xff1a;用什么结…...

前端文件、图片直传OOS、分片上传、el-upload上传(vue+elementUI)

前言&#xff1a;基于天翼云的面相对象存储(Object-Oriented Storage&#xff0c;OOS),实现小文件的直接上传&#xff0c;大文件的分片上传。 开发文档地址&#xff1a;网址 上传之前的相关操作&#xff1a;注册账户&#xff0c;创建 AccessKeyId 和 AccessSecretKey之后&…...