DataTable与Linq相互转换方法
来源:互联网 发布:跳跃网络账号升级 编辑:程序博客网 时间:2024/06/05 18:18
DataTable通过dt.AsEnumerable()方法转换可用Linq查询 。 DataTable newDt = query1.CopyToDataTable<DataRow>( );
var query1 =
from stu in dtStu.AsEnumerable( )
from score in dtScore.AsEnumerable( )
where stu.Field<int>("ScoreID") == score.Field<int>("ScoreID")
where (int)stu["Age"] > 20
select stu;
//通过CopyToDataTable()方法创建新的副本
DataTable newDt = query1.CopyToDataTable<DataRow>( );
- namespace UseCopyToTable
- {
- class Program
- {
- static void Main(string[] args)
- {
- UseCopyToDTSimple( );
- UseSetField( );
- }
- static DataSet BuildDataSet( )
- {
- //创建Students数据集
- DataSet ds = new DataSet("Students");
- //创建Students数据表,并添加到数据集
- //Students数据表包含学生信息
- DataTable dtStu = new DataTable("Students");
- ds.Tables.Add(dtStu);
- //添加学生信息记录的列信息
- dtStu.Columns.AddRange(new DataColumn[]{
- new DataColumn("Name", Type.GetType("System.String")),
- new DataColumn("XingBie", Type.GetType("System.String")),
- new DataColumn("Age", Type.GetType("System.Int32")),
- new DataColumn("ScoreID", Type.GetType("System.Int32")),
- });
- //添加学生信息的行信息
- dtStu.Rows.Add("张三", "男", 20, 1);
- dtStu.Rows.Add("李四", "男", 19, 2);
- dtStu.Rows.Add("王霞", "女", 21, 3);
- dtStu.Rows.Add("赵敏", "女", 22, 4);
- dtStu.Rows.Add("吴安", "男", 18, 5);
- //创建Scores数据表,并添加到数据集
- //Scores数据表包含学生成绩记录
- DataTable dtScore = new DataTable("Scores");
- ds.Tables.Add(dtScore);
- //添加成绩记录的列信息
- dtScore.Columns.AddRange(new DataColumn[]{
- new DataColumn("ScoreID", Type.GetType("System.Int32")),
- new DataColumn("Math", Type.GetType("System.Int32")),
- new DataColumn("Chinese", Type.GetType("System.Int32")),
- new DataColumn("English", Type.GetType("System.Int32")),
- });
- //添加学生成绩记录
- dtScore.Rows.Add(1, 80, 75, 78);
- dtScore.Rows.Add(3, 88, 80, 60);
- dtScore.Rows.Add(4, 75, 90, 80);
- dtScore.Rows.Add(5, 59, 80, 75);
- //返回数据集
- return ds;
- }
- static void UseCopyToDTSimple( )
- {
- //获取数据集和要进行查询的数据表
- DataSet ds = BuildDataSet( );
- DataTable dtStu = ds.Tables["Students"];
- DataTable dtScore = ds.Tables["Scores"];
- //查询query1年龄大于20且具有成绩的学生
- var query1 =
- from stu in dtStu.AsEnumerable( )
- from score in dtScore.AsEnumerable( )
- where stu.Field<int>("ScoreID") == score.Field<int>("ScoreID")
- where (int)stu["Age"] > 20
- select stu;
- //通过CopyToDataTable()方法创建新的副本
- DataTable newDt = query1.CopyToDataTable<DataRow>( );
- //打印副本的信息
- System.Console.WriteLine("学生列表:");
- foreach (var item in newDt.AsEnumerable())
- {
- System.Console.WriteLine("姓名:{0}, 性别:{1}, 年龄:{2}",
- item["Name"], item["XingBie"], item["Age"]);
- }
- }
- static void UseSetField( )
- {
- //获取数据集和要进行查询的数据表
- DataSet ds = BuildDataSet( );
- DataTable dtStu = ds.Tables["Students"];
- //将所有学生的年龄都增加2岁
- foreach (var row in dtStu.AsEnumerable())
- {
- int age = row.Field<int>("Age");
- row.SetField<int>("Age", age + 2);
- }
- //打印新的学生信息
- System.Console.WriteLine("学生列表:");
- foreach (var item in dtStu.AsEnumerable( ))
- {
- System.Console.WriteLine("姓名:{0}, 性别:{1}, 年龄:{2}",
- item["Name"], item["XingBie"], item["Age"]);
- }
- }
- }
- }
- DataTable与Linq相互转换方法
- DataTable与Linq相互转换方法
- DataTable与Linq相互转换方法
- DataTable与Linq相互转换
- DataTable与Linq相互转换
- Xml与DataTable相互转换方法
- Xml与DataTable相互转换方法
- json与DataTable相互转换
- DataTable与数组相互转换
- json与datatable的相互转换
- DataTable 与 实体之间相互转换
- xml与datatable间相互转换
- List<T>与DataTable相互转换
- C#中List与DataTable相互转换
- 用Linq和Dataview筛选查询DataTable数据,DataTable和List相互转换
- C# DataTable 和List之间相互转换的方法[转]
- C# DataTable 和List之间相互转换的方法
- C# DataTable 和List之间相互转换的方法
- Android 开发源码分享
- 测试者存在的问题
- android下opengles调试小技巧
- java文件上传fileupload
- DispatchAction的用法
- DataTable与Linq相互转换方法
- Debian 6.0.6 系统安装第六步: 安装远程桌面支持
- jsp表单验证大全
- Android 获apk取包名,版本信息及VersionName名称
- 内存对齐
- FusionCharts图表控件常见问题解答FAQ
- VC++ TAB控件使用
- html标签的使用
- 【代码】POJ 2762