C# 循环通过列以存储在会话中

C# 循环通过列以存储在会话中,c#,asp.net,session,C#,Asp.net,Session,所以我有一个DataTable,它使用了一个“SELECT*FROM People WHERE ID=?”,您可以理解,这将只检索一行,因为ID是唯一的 我已将其列为一个列表: List<DataTable> userInfo = (List<DataTable>)HttpContext.Current.Session["userDT"]; List userInfo=(List)HttpContext.Current.Session[“userDT”]; 现在

所以我有一个DataTable,它使用了一个“SELECT*FROM People WHERE ID=?”,您可以理解,这将只检索一行,因为ID是唯一的

我已将其列为一个列表:

   List<DataTable> userInfo = (List<DataTable>)HttpContext.Current.Session["userDT"];
List userInfo=(List)HttpContext.Current.Session[“userDT”];
现在,我正在尝试执行foreach循环,该循环将遍历每一行并将列存储到会话中,这就是我目前所做的:

但是,我得到一个错误:

无法将类型“System.Data.DataTable”转换为“System.Data.DataRow”


有人知道我做错了什么吗?

userInfo是一个表列表。您必须遍历它,并且对于每个表,您可以访问该表的行:

        foreach (DataTable dt in userInfo)
        {
            foreach (DataColumn column in dt.Columns)
            {
                // if you want column names here is how you would get them
                string columnName = column.ColumnName;

                foreach (DataRow row in dt.Rows)
                {
                    // if you want the values in the cells, here's where you get them
                    object value = row[column];
                }
            }
        }

那么,如何将类似first_name的列存储到会话中?您是否在询问如何访问名为“first_name”的列中的值?或者您正在寻找列名?您不应该在会话中将其存储为DataRow或普通值。相反,创建一个包含要存储的属性的类,并将其存储在会话中。