Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在数据表中查找';他被调换了位置_C#_Datatable - Fatal编程技术网

C# 在数据表中查找';他被调换了位置

C# 在数据表中查找';他被调换了位置,c#,datatable,C#,Datatable,我有一个数据表,它在日期列上被转置,现在看起来像这样 +--------+------------+-------------+ | | 1/1/2015 | 1/2/2015 | +--------+-------+------------------+ | FieldA | Type | MySQL | | FieldB | Header | Spreads | | FieldC | Auto Align | On

我有一个数据表,它在日期列上被转置,现在看起来像这样

+--------+------------+-------------+
|        | 1/1/2015   |  1/2/2015   |
+--------+-------+------------------+
| FieldA | Type       | MySQL       |
| FieldB | Header     | Spreads     |
| FieldC | Auto Align | On          |
+---+------------+------------------+
我希望能够根据列名和行名获得特定的值。 例如,如果我知道我想要日期为2015年1月1日的FieldA,我应该返回类型

用于转置数据表的代码

 public static DataTable Transpose(DataTable dt)
        {
            DataTable dtNew = new DataTable();

            //adding columns    
            for (int i = 0; i <= dt.Rows.Count; i++)
            {
                dtNew.Columns.Add(i.ToString());
            }



            //Changing Column Captions: 
            dtNew.Columns[0].ColumnName = " ";

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                //For dateTime columns use like below
                dtNew.Columns[i + 1].ColumnName = Convert.ToDateTime(dt.Rows[i].ItemArray[0].ToString()).ToString("MM/dd/yyyy");
                //Else just assign the ItermArry[0] to the columnName prooperty
            }

            //Adding Row Data
            for (int k = 1; k < dt.Columns.Count; k++)
            {
                DataRow r = dtNew.NewRow();
                r[0] = dt.Columns[k].ToString();
                for (int j = 1; j <= dt.Rows.Count; j++)
                    r[j] = dt.Rows[j - 1][k];
                dtNew.Rows.Add(r);
            }

            return dtNew;
        }
公共静态数据表转置(数据表dt)
{
DataTable dtNew=新DataTable();
//添加列

对于(int i=0;i您应该能够正常访问转置的
数据表

var monthCol = "01/01/2015"; // based on format in your code
var fieldName = "FieldA";
var res = dtTransposed.Select($"[ ] = {fieldName}")[0][monthCol]; // you really should name the first column, say "Field"
如果您知道数据的数据类型,可以使用
字段(monthCol)

您还可以使用LINQ:

var res = dtTransposed.AsEnumerable().Where(dr => dr[" "] == fieldName).Select(dr => dr[monthCol]);

此数据表数据是否从Pivot查询返回..?显示用于生成行/列的查询