表中某列的所有值转成List泛型集合

代码如下:

//表dt中含有字段名称列
List<string> fieldList = dt.AsEnumerable().Select(t => t.Field<string>("字段名称")).ToList<string>();//还可以List<string> fieldList2=(from d in dt.AsEnumerable() select d.Field<string>("字段名称")).ToList<string>();

其中dt.AsEnumerable()得到datarow的集合,对于DataRow有一个Field<T>("列名")的方法:dr.Field<string>("字段名称"),得到字符串类型的值。

扩展:Lambda表达式和Linq

    class Program
    {
        static void Main(string[] args)
        {
            LinqDataTable();
        }
        public static string[,] infoArr = new string[,] { { "1", "百度", "baidu", "201303" }, { "2", "迅雷", "xunlei", "201302" }, { "3", "谷歌", "guge", "201301" } };
        protected static void LinqDataTable()
        {
            DataRow row;
            ClientStruct cs = new ClientStruct();
            DataTable dtTable = new DataTable();
            dtTable.Columns.Add(cs.ID);
            dtTable.Columns.Add(cs.Name);
            dtTable.Columns.Add(cs.Company);
            dtTable.Columns.Add(cs.CreatedDate);
            for (int i = 0; i < 3; i++)
            {
                row = dtTable.NewRow();
                row[cs.ID] = infoArr[i, 0];
                row[cs.Name] = infoArr[i, 1];
                row[cs.Company] = infoArr[i, 2];
                row[cs.CreatedDate] = infoArr[i, 3];
                dtTable.Rows.Add(row);
            }

            //遍历DataTable,取出所有的ID
            //第一种:
            List<string> lstID = (from d in dtTable.AsEnumerable()
                                  select d.Field<string>(cs.ID)).ToList<string>();

            //第二种:
            List<string> allId = dtTable.AsEnumerable().Select(d => d.Field<string>("ID")).ToList();

            //遍历DataTable,将其中的数据对应到ClientStruct中
            //第一种:
            List<ClientStruct> list = (from x in dtTable.AsEnumerable()
                                       orderby x.Field<string>(cs.Company)
                                       select new ClientStruct
                                       {
                                           ID = x.Field<string>(cs.ID),
                                           Name = x.Field<string>(cs.Name),
                                           Company = x.Field<string>(cs.Company),
                                           CreatedDate = x.Field<string>(cs.CreatedDate)
                                       }).ToList<ClientStruct>();

            //第二种:
            List<ClientStruct> list2 = dtTable.AsEnumerable().OrderBy(o => o.Field<string>(cs.Company)).Select(x => new ClientStruct
            {
                ID = x.Field<string>(cs.ID),
                Name = x.Field<string>(cs.Name),
                Company = x.Field<string>(cs.Company),
                CreatedDate = x.Field<string>(cs.CreatedDate)
            }).ToList<ClientStruct>();

            //遍历DataTable,并将上面的List结果存储到Dictionary中:
            Dictionary<string, ClientStruct> dic = list.ToDictionary(p => p.Company);

            //p作为string键值来存储
        }
    }
    /*遍历DataTable*/
    class ClientStruct
    {
        public string ID = "ID";
        public string Name = "Name";
        public string Company = "Company";
        public string CreatedDate = "CreatedDate";
    }

  

时间: 2024-09-28 18:21:31

表中某列的所有值转成List泛型集合的相关文章

EF连接Mysql 表&#39;TableDetails&#39;中的列&#39;IsPrimaryKey&#39;的值为DBNull

无法生成模型,因为存在以下异常:'System.Data.StrongTypingException:表'TableDetails'中的列'IsPrimaryKey'的值为DBNull.---> System.InvalidCastException:指定的转换无效. 原文链接http://stackoverflow.com/questions/33575109/mysql-entity-the-value-for-column-isprimarykey-in-table-tabledetail

PowerDesigner里面将表中name列值复制到comment列

/** * PowerDesigner里面将表中name列值复制到comment列 * @see -------------------------------------------------------------------------------------------------------------------- * @see pd中的pdm默认生成sql时,字段是没有注释的..想要注释的话,有2个方法 * @see 1.也是推荐的 * @see pdm中双击打开一个Table,

mysql互换表中两列数据

在开发过程中,有时由于业务等需要把一个表中的两列数据进行交换. 解决方案 使用update命令,这完全得益于MySQL SQL命令功能的强大支持. 表格中原来数据类似如下: select * from product; +----+--------+| id | name   | original_price | price  | +----+----+--------+|  1 | 雪糕   |           5.00 |   3.50 | |  2 | 鲜花   |          

神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键.聚合函数(SUM .AVG 等).常量.我们来看个例子 我们有 学生班级表(tbl_student_class) 以及 数据如下 : DROP TABLE IF EXISTS tbl_student_class; CREATE TABLE

SQL Server2008为表的某列设置默认值为SQL Server函数

  例如,设置SQL Server函数GETDATE()作为默认值: SQL Server2008为表的某列设置默认值为SQL Server函数

把表中一列的所有数字加和

问题: 想要遍历表中一列的所有值,将这些值转换为数字,然后将这些值相加. 解决方案: 遍历表中包含了数字值的列,将其转换为数字,并且加和. var sum = 0; //使用querySelector找到第二列中的所有单元格 var cells = document.querySelectorAll('td:nth-of-type(2)'); for(var i = 0; i < cells.length; i ++){ sum += parseFloat(cells[i].firstChild

Sql_Server中如何判断表中某列是否存在

/*判断表AA中是否存在AA_ID这一列,如果不存在,则新增*/ IF NOT EXISTS (SELECT 1 FROM syscolumns INNER JOIN sysobjects ON sysobjects.id = syscolumns.id WHERE syscolumns.name = 'AA_ID' AND sysobjects.name = 'AA') ALTER TABLE AA ADD AA_ID VARCHAR(30) NULL GO Sql_Server中如何判断表中

sql得到表中的列信息

取列全部用的 sys. 中的表 CTE:WITH name AS() 用法:   sql树形查询 ①主键信息 SELECT ic.column_id, ic.index_column_id, ic.object_id FROM sys.indexes idx INNER JOIN sys.index_columns ic ON idx.index_id = ic.index_id AND idx.object_id = ic.object_id WHERE idx.object_id = OBJ

维度属性的KeyColumns如果是Integer类型,那么维度表中该列的值不能有为null的

如果维度属性的 KeyColumns的DataType设置为了Integer类型,那么要注意该维度属性列在数据库中不能有为null的值. 例如下图中我们有维度DIM_Vehcile,其中有个维度属性叫Vehicle Year,该属性的 KeyColumns的DataType设置为了Integer类型,如果现在数据库中DIM_Vehcile表的字段VehicleYear有为null的值,那么处理维度DIM_Vehcile时,会报Duplicate Key Error. 这是因为如果维度属性Vehi