C#如何根据DataTable生成泛型List或者动态类型list

背景:在项目中,sql语句检索返回DataTable,然后根据检索结果做进一步的操作,本篇文章即是介绍如何将DataTable快速生成泛型List返回。

假设存在如下学生类:

1     public class student
2     {
3         public int ID { get; set; }
4         public string  StuName { get; set; }
5         public string  CityCode { get; set; }
6     }

存在如下数据表Student:

1、泛型List,其C#代码如下:

1             da.Fill(dt);
2             List<student> listStu = null;
3             if (dt.Rows.Count > 0)
4             {
5                 listStu = dt.AsEnumerable().Select(row => new student() { ID = Convert.ToInt32(row["ID"]), StuName = row["StuName"].ToString(), CityCode = row["CityCode"].ToString() }).ToList();
6             }

注意代码中,Select和ToList()的使用。

2、动态类型List,其C#代码如下:

1             da.Fill(dt);
2             if (dt.Rows.Count > 0)
3             {
4                 var rows = dt.AsEnumerable().Select(row => new  { ID = Convert.ToInt32(row["ID"]), StuName = row["StuName"].ToString(), CityCode = row["CityCode"].ToString() }).ToList();
5                 foreach (var item in rows)
6                 {
7                     Console.WriteLine(item.StuName);
8                 }
9             }

其中rows的每一个元素,均为一个匿名类型的对象。

时间: 2024-12-28 00:01:19

C#如何根据DataTable生成泛型List或者动态类型list的相关文章

机房收费系统重构——Datatable转泛型

刚开始在机房重构中用的最多的是Datatable,之前没有开始的时候就听大家一直在说泛型,很好奇这个东西,也很想知道明明用Datatable就可以,为什么非要转成泛型?它到底有什么好处呢?于是,便开始了研究-- Datatable是一个临时保存数据的网格,是一个虚拟表.我们在使用Datatable时,通过D层直接将数据库中的数据选出来,返回到B层和U层,在返回的时候我们要是想显示到窗体,就需要将U层的文本框与这个表中的字段一一对应.如果不小心就会写错,然后数据显示就不对.这样对数据库的耦合性太大

DataTable与泛型

刚刚开始机房重构的时候用的最多的就是DataTable,在用的时候感觉有一点点别扭,因为D层从数据库中 把数据取出来之后直接通过DataTable返回到B层和U层了,这样对于数据库数据的安全性不太好.然后慢慢知 道了泛型,通过泛型可以很好的解决数据安全的问题 一.DataTable Public Function QueryCard(card As Entity.CardEntity) As Entity.CardEntity Implements ICard.QueryCard Dim hel

[工具类]DataTable与泛型集合List互转

写在前面 工作中经常遇到datatable与list,对于datatable而言操作起来不太方便.所以有的时候还是非常希望通过泛型集合来进行操作的.所以这里就封装了一个扩展类.也方便使用. 类 方法中主要使用了反射的方式动态的为属性赋值以及取值. public static class Extension { /// <summary> /// 将datatable转换为泛型集合 /// </summary> /// <typeparam name="TEntity

C#将datatable生成easyui的绑定tree 的json数据格式[转载]

在用easyui控件的时候常用到他能解析的 接送数据,我们可以通过c#将我们从数据库中得到datatable转换成那样的格式,datagrid的好转换,简单的循环拼串就可以,不过 easyui绑定树的时候的接送数据格式稍有不同,比datagrid和datagridtree得到json数据要稍微复杂一些,我写了性能虽然不是很 好的,但是也能得到想要的数据! /// <summary> /// 根据DataTable生成Json树结构 /// </summary> /// <pa

.net 根据匿名类生成实体类,根据datatable生成实体类,根据sql生成实体类

在开发中可能会遇到这几种情况 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要先建一个类 ,头痛 4.如果通过代码生成器要写模版,需要安装或者不想生成一堆不用的类 为了解决上面的不便之处,我封装了一个实体生成类,可以扔到程序里面任意调用 封装类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

泛型的几种类型以及初识webform

今天学习的可以分为两类吧,但是学习的都是比较抽象的,不太容易掌握吧.首先我们大部分时间学习了泛型,泛型的委托,泛型接口以及枚举器,迭代器,扩展方法:最后简单的认识了webform,实现了一个简单的功能. 一.泛型 定义:泛型(generic)可以软糖多个类型共享一组代码,泛型允许我们声明类型参数化.可以用不同的类型进行实例化,说白了,就是可以用类型占位符,创建具体类型致命的真实概念.C#中提供了五种泛型,类,结构,接口,委托和方法.下面举例说明可能更容易理解, class MyStack<T>

协变、逆变与不变:数组、泛型、与返回类型

转自:http://blog.csdn.net/yi_Afly/article/details/52071260 1. 前言 之前几篇博文,有些地方涉及到了协变性.逆变性与不变性在Java中的表现,所以这篇博文将重点记录这方面的内容,并辅以JDK源码中的一些实例,加以说明. 2. 定义 这里讨论的协变.逆变与不变都是编程语言中的概念.下面介绍定义: 若类A是类B的子类,则记作A ≦ B.设有变换f(),若: 当A ≦ B时,有f(A)≦ f(B),则称变换f()具有协变性. 当A ≦ B时,有f

[转]Linux下用gcc/g++生成静态库和动态库(Z)

Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅 在 linux 下,库文件一般放在 /usr/lib 和 /lib 下, 静态库的名字一般为 libxxxx.a ,其中 xxxx 是该 lib 的名称 动态库的名字一般为 libxxxx.so.major.minor , xxxx 是该 lib 的名称, major 是主版本号, minor 是副版本号

从头认识java-13.11 对比数组与泛型容器,观察类型擦除给泛型容器带来什么问题?

这一章节我们继续类型擦除的话题,我们将通过对比数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { public static void main(String[] args) { Fruit[] fruits = new Apple[5]; fruits[0] = new Apple(); fruits[1] = new Fuji(); fruits[2] = new Fruit(); } } cla