C#在DataTable中使用LINQ
LINQ 查询适用于实现的数据源 IEnumerable<T>接口或System.Query.IQueryable接口。
DataTable类默认是没有实现以上接口的。
所以要在DataTable中使用LINQ查询,需要调用一下AsEnumerable方法,返回一个EnumerableRowCollection<DataRow>集合。
这样我们就可以在DataTable中使用LINQ查询了
首先创建测试数据
1 private static DataTable GetStuTable() 2 { 3 4 int[] id = { 4, 5, 1, 3, 2, 7, 6 }; 5 string[] name = {"Tom","Jack","HelloWorld","Visual Studio","Gril","Timmy","Geo" }; 6 DataTable table = new DataTable("Student"); 7 table.Columns.Add("ID", typeof(int)); 8 table.Columns.Add("Name", typeof(string)); 9 10 for(int i = 0;i< id.Length;i++) 11 { 12 table.Rows.Add(new object[] { id[i],name[i]}); 13 } 14 15 return table; 16 }
1、使用LINQ对DataTable进行排序
1 DataTable dt = GetNumbersTable(); 2 3 var students = dt.AsEnumerable(); 4 5 //排序 6 var result = students.OrderBy(x => x.Field<int>("ID")); 7 8 //输出 9 Console.WriteLine("ID" + "\t" + "Name"); 10 foreach (DataRow row in result) 11 { 12 Console.WriteLine(row["ID"].ToString() + "\t" + row["Name"].ToString()); 13 }
运行结果如下
2、将LINQ查询结果保存为DataTable
这里只要调用DataTableExtensions. CopyToDataTable< T>方法就行了。(需要引用System.Data.DataSetExtensions.dll程序集)
1 static void Main(string[] args) 2 { 3 DataTable dt = GetNumbersTable(); 4 5 var students = dt.AsEnumerable(); 6 7 DataTable tempDataTable = students.OrderByDescending(x => x.Field<int>("ID")).CopyToDataTable<DataRow>(); 8 9 for (int i = 0; i < tempDataTable.Columns.Count; i++) 10 { 11 Console.Write(tempDataTable.Columns[i].Caption + "\t"); 12 } 13 14 Console.WriteLine(); 15 for (int i = 0; i < tempDataTable.Rows.Count; i++) 16 { 17 for (int j = 0; j < tempDataTable.Columns.Count; j++) 18 { 19 Console.Write(tempDataTable.Rows[i][j].ToString() + "\t"); 20 } 21 Console.WriteLine(); 22 } 23 }
运行结果如下
3、转换为List集合
针对示例数据,创建相应的数据结构
1 public class Student 2 { 3 public string ID { get; set; } 4 public string Name { get; set; } 5 }
转换为List集合
1 static void Main(string[] args) 2 { 3 DataTable dt = GetNumbersTable(); 4 5 var students = dt.AsEnumerable(); 6 7 List<Student> list = students.Select 8 ( 9 x=> new Student 10 { 11 ID = x.Field<int>("ID"), 12 Name = x.Field<string>("Name") 13 } 14 ).ToList(); 15 16 foreach (var item in list) 17 { 18 Console.WriteLine(item.ID + "\t" + item.Name); 19 } 20 }
运行结果
转载于:https://www.cnblogs.com/zhaotianff/p/9248157.html
C#在DataTable中使用LINQ相关推荐
- datatable中使用linq的条件或_C# 10. LINQ 的三种查询语句写法
前言: LINQ(语言集成查询)是 C#编程语言中的一部分.它在.NET Framework 3.5 和 C#3.0 被引入,在 System.Linq 命名空间中使用.LINQ 为我们提供了通用的查 ...
- 获取DataTable中的某一列及增加一行数据
C#中获取DataTable中的某一列数据,存入List<T> Field 需要用到System.Data.DataSetExtensions using System; using Sy ...
- 在DataTable中更新、删除数据
在DataTable中选择记录 /*在DataTable中选择记录*//* 向DataTable中插入记录如上,更新和删除如下:* ----但是在更新和删除前,首先要找出要更新和删除的记录.* 一种方 ...
- DataTable中数据记录的统计
DataTable中数据记录的统计 我们在使用Sql Server这些数据库时,可以轻松的通过Sum.Aver.Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTabl ...
- 在DataTable中创建计算列
我们知道DataTable是内存中的一个表,可以用DataColumn和DataRow来构造一个DataTable,并且用DataColumn的Expression属性来创建计算列. (1)创建计算列 ...
- 关于在DataTable中执行DataTable.Select(条件)返回DataTable的解决方法
在实际编程工程中,常常遇到这样的情况:DataTable并不是数据库中的,或者DataTable尚未写到数据库,或者从数据库中读出的DataTable已经在本地被改动,又没有写回数据库(可能还要作其他 ...
- 比较2个DataTable中的内容是否相同的方法
DataTable可以通过RowStatus来判断状态是否发生了改变.但是有些时候我们希望在行状态即使为Modified的情况下也不要提示内容发生了变化,这个时候我们可能就需要自己写方法去判断了.比如 ...
- 向DataTable中添加自定义的行
[标题]向DataTable中添加自定义行 [内容] 向DataTable中添加自定义行,然后绑定到DropDownList控件中,并且默认行为控件的第一行 如果表结构如下: ...
- 将DataTable中的数据导入到数据库中
上次在根据excel的文件的路径提取其中表的数据到DataSet中 一文中介绍了将Excel文件中的数据读取到DataSet中的方法,今天我来介绍下我曾经在项目中用到的一个将DataTable中的数据 ...
最新文章
- 地理投影展开(近似多边形体)
- Apache ZooKeeper - 选举Leader源码流程深度解析
- Python3 正则表达式特殊符号及用法(详细列表)
- Spring容器中获取Bean实例的七种方式(附实战源码)
- Pixhawk-串级pid介绍
- 阿帕奇跨域_阿帕奇骆驼备忘单
- ffmpeg 解码音频(aac、mp3)输出pcm文件
- 关于ASCII字符的那些事儿
- 懂得一些基本常识,就不会被《非酒精類致命飲料》或者叫做《我一辈子都不再喝可口可乐》的这篇文章所蒙蔽...
- 转载 Assert断言知识
- 用邮件备份手机数据是必然趋势
- Redis入门整合springboot
- 遥感影像预处理流程及基本概念介绍(辐射校正、辐射定标、大气校正、正射校正等)
- 调试sim800L模块
- ubuntu下将eth3改为eth0及HWaddr的修改
- 设计师的色彩理论,你知道不同色彩的秘密吗?
- js 根据链接生成二维码
- html 格式化金额显示
- 家用计算机长期不关机的后果,长时间不关机对电脑有什么影响
- 第十二届蓝桥杯省赛 C/C++大学B组 试题G:砝码称重
热门文章
- 清华大学研究称国内多城市饮用水含高浓度PFAS
- html自定义radio样式,用纯CSS 自定义radio checkbox 样式
- android下拉刷新动画效果代码_vue项目实录:下拉刷新组件的开发及slot的使用
- 010_Post请求中文乱码
- 096_JavaScript事件
- 字符串html在线互转,将string 的字符串转换为HTML的两种方法
- linux导出并追加到文件,linux – 如何将awk结果输出到文件
- 实用金属材料手册_实用电工材料手册
- 这是我看过最好的Java编程入门视频教程!
- dr. unarchiver_P160 四季可穿,数仙女尽折腰!醉高版本Dr马丁靴女2020秋冬新款牛筋底1460英伦风8孔系带复古机车军靴真皮短靴马丁靴...