当前位置: 首页 > 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 模型)寻找与自己穿搭风格相似的明星。在这篇文章中,我们将进一步介绍如何通过对上篇文章中的项目代码稍作修改,获得更详细和准确的结果,文末附赠彩蛋。 注:试用此…...

如何三步完成QQ音乐加密音频的免费解密:解决音乐格式兼容性难题

如何三步完成QQ音乐加密音频的免费解密&#xff1a;解决音乐格式兼容性难题 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xf…...

终极指南:使用Python脚本突破百度网盘限速壁垒

终极指南&#xff1a;使用Python脚本突破百度网盘限速壁垒 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在云存储服务日益普及的今天&#xff0c;百度网盘凭借其庞大的用户基…...

Wireshark提取NTLMv2 Hash与Hashcat强度验证实战

1. 这不是“黑客教程”&#xff0c;而是一次企业内网安全加固前的必做体检Wireshark抓NTLMv2 Hash、Hashcat暴力破解——看到这两个词&#xff0c;很多人第一反应是“红队操作”或“渗透测试”。但在我过去十年服务的三十多家中大型企业客户里&#xff0c;真正驱动这个动作的&a…...

微信聊天记录丢了怎么找回?这份教程很实用

你是否经历过这样的崩溃瞬间&#xff1a;手机清理空间时不小心删了微信聊天记录&#xff0c;或者重装微信后发现重要的对话全部消失&#xff1f;别慌&#xff0c;本文将系统梳理微信聊天记录丢失的常见原因&#xff0c;并提供多种经过验证的恢复方案&#xff0c;从微信官方自带…...

液压液水解安定性检测:核心原理与全行业应用场景解析

液压系统是各类工业、工程、交通设备的动力核心&#xff0c;而液压液作为系统的工作介质&#xff0c;其性能稳定性直接决定设备的运行精度、故障率以及使用寿命。在复杂工况中&#xff0c;水分侵入是导致液压液失效的核心诱因之一&#xff0c;油液遇水发生水解反应后&#xff0…...

天勤策略钉钉告警:交易信号与异常通知怎么分流

前言 策略上云之后&#xff0c;我和同事最怕两件事&#xff1a;一是真出事了没人知道&#xff0c;二是没事也被钉钉刷屏刷到麻木。最早接推送时图省事&#xff0c;在 wait_update 里每次 last_price 变就发一条&#xff0c;一个活跃品种白天能几百条&#xff0c;两天之后群里全…...

F1C100s移植LVGL 8.2避坑指南:从Makefile修改到双缓冲配置

F1C100s移植LVGL 8.2实战手册&#xff1a;从编译优化到显示性能调优 在嵌入式Linux系统开发中&#xff0c;图形用户界面(GUI)的实现往往是最具挑战性的环节之一。对于资源受限的全志F1C100s芯片而言&#xff0c;如何在有限的RAM和CPU性能下实现流畅的图形交互&#xff0c;LVGL(…...

linux的逻辑卷管理(Logical Volume Manager)

在对磁盘进行分区大小规划时&#xff0c;有时往往不能确定这个分区要使用的总空间大小。而用fdisk对磁盘进行分区后&#xff0c;每个分区的大小就已经固定了&#xff0c;如果分区设置的过大&#xff0c;会白白浪费磁盘空间&#xff1b;分区设置的过小&#xff0c;就会导致空间不…...

激光器物理理论模型:从经典到量子,工程师如何选择?

1. 激光器物理理论模型全景概览激光&#xff0c;这束高度相干、单色、定向的光&#xff0c;其诞生与运作背后&#xff0c;是一套极其精密的物理法则。对于从事光电子、激光技术研发&#xff0c;乃至物理研究的工程师和学者而言&#xff0c;理解这些法则的不同描述层次&#xff…...

CANN/asc-devkit Ascend C矢量压缩API

asc_squeeze 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.co…...