背景:在项目中,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的每一个元素,均为一个匿名类型的对象。