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             }

运行结果如下

原文地址:https://www.cnblogs.com/zhaotianff/p/9248157.html

时间: 2024-10-16 00:07:58

C#在DataTable中使用LINQ的相关文章

C# DataTable中返回列中的最大值

此处以表dt2中的keyIndex列(int类型)为例 1.通过linq来实现 int maxKeyIndex = dt2.AsEnumerable().Select(t => t.Field<int>("keyIndex")).Max(); Linq语法:点击打开链接2.通过Compute方法来实现 int ee = (int)dt2.Compute("Max(keyIndex)", "true"); Compute方法:点击

读取指定路径的Excel内容到DataTable中

1 /// <summary> 2 /// 读取指定路径的Excel内容到DataTable中 3 /// </summary> 4 /// <param name="path"></param> 5 /// <returns></returns> 6 public DataTable ImportToDataSet(string path) 7 { 8 string strConn = "Provide

C#中删除DataTable中的行的方法

1.在C#中,如果要删除DataTable中的某一行,大约有以下几种办法: •使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index):可以直接删除行•datatable.Rows[i].Delete().Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消

C++14尝鲜:在C++中实现LINQ

在C++中实现LINQ #include <iostream> #include <vector> template<typename TIterator> struct from_range { typedef typename std::iterator_traits<TIterator>::value_type value_type; TIterator current, upcoming, end; from_range(TIterator begi

.Net多个DataTable合并,及过滤掉DataTable中重复数据行

DataTable dt01= new DataTable(); DataTable dt02= new DataTable(); DataTable dtRs = new DataTable(); dt01=sqlHelper.GetDataTable(strSQL001) dt02=sqlHelper.GetDataTable(strSQL002) //数据表dt02与dt01合并 dt01.Merge(dt02); //多个表合并可能产生重复数据,过滤掉重复数据 DataView dv =

.NET的 DataTable中某列求和

public DataTable ReportDetail { get; set; }//定义datatable属性 this.txtTotalPiece.Text = ReportDetail.Compute("sum(Piece)", "TRUE").ToString();//求和 .NET的 DataTable中某列求和

操作DataTable中的数据

在项目中,经常会遇到这样的问题.用SQL从数据库中选出需要的数据存入DataTable之后,需要进行一定的处理之后,才可以用来显示在页面上. 之前对这些问题,都是遇到一个就百度一个,没有系统的处理这些问题,今天就写个文档来处理一下这个问题 先来几个简单的喽. 添加列和行: (既然是整理, 那就写全一点吧,三个方法) #region 方法一: DataTable tblDatas =new DataTable("Datas"); //表名 DataColumn dc =null; dc

C#中DataTable中的Compute方法使用收集

原文: C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详细内容请看这里“http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx”.而Filter则是条件过滤器,类似sql的Where条件. DataTable dt = new DataT

在SharePoint中使用LINQ

在SharePoint中使用LINQ LINQ是一种有效且高效的查询数据的方法.使用SPMetal你可以为LINQ准备SharePoint列表.下面讲解如何准备你的列表,并创建使用LINQ的应用程序. 1. 打开命令行(管理员身份运行). 2. 导航到c:\Program Files\Common Files\Microsoft Shared\web server extensions\14\bin,并输入下面命令(确保用你自己的服务器名代替) spmetal.exe /web:http://<