【发布时间】:2017-05-02 06:24:05
【问题描述】:
我正在开发 asp.net web app .net 版本 4。我有一个如下所示的数据表:
FCTR_GRP CUST_TIER CUST_TIER
DSC SW Tier 1 1.000000
DSC SW Tier 2 1.000000
DSC SW Tier 3 1.000000
DSC SW Tier 4 1.000000
使用我从 Netezza 数据库中读取的上述数据表,我想将其转换为如下数据表:
FCTR_GRP TIER_1 TIER_2 TIER_3 TIER_4
DSC SW 1.000000 1.000000 1.000000 1.000000
然后将其绑定到gridview。由于可以稍后添加层,因此 gridview 需要是动态的。 直到现在我才到达这里。我可以像这样转换第一个数据表:
FCTR_GRP TIER_1 TIER_2 TIER_3 TIER_4
DSC SW 1.000000
DSC SW 1.000000
DSC SW 1.000000
DSC SW 1.000000
代码用作(对代码不满意:(但没有其他选择)
DataTable CustomerCurrentFactorDataTable = new DataTable();
CustomerCurrentFactorDataTable.Columns.Add("Factor Group", typeof(System.String));
foreach (DataRow datarow in dt.Rows)
{
CustomerCurrentFactorDataTable.Columns.Add(datarow["CUST_TIER"].ToString().ToUpper(), typeof(System.String));
}
GridViewSample.DataSource = CustomerCurrentFactorDataTable;
GridViewSample.DataBind();
#region
string query = "SELECT FCTR_GRP, CUST_TIER, CUST_FCTR FROM DBO.CUST_FCTR";
#endregion
dt = getData.GetDataTable(query);
DataRow dr = CustomerCurrentFactorDataTable.NewRow();
int columnCount = CustomerCurrentFactorDataTable.Columns.Count;
int internalCounter = 0;
int count = 0;
bool flag=false;
int loopoutcounter = 0;
foreach (DataRow dataRow in dt.Rows)
{
count = 0;
if (loopoutcounter == 2)
{
loopoutcounter = 0;
CustomerCurrentFactorDataTable.Rows.Add(dr);
dr = CustomerCurrentFactorDataTable.NewRow();
//dr.Delete();
}
foreach (var cell in dataRow.ItemArray)
{
if (count == 0)
{
dr[count] = cell.ToString();
loopoutcounter++;
count++;
}
if (flag)
{
dr[internalCounter] = cell.ToString();
flag = false;
loopoutcounter++;
}
foreach (DataColumn column in CustomerCurrentFactorDataTable.Columns)
{
if (column.ColumnName == cell.ToString().ToUpper())
{
flag = true;
internalCounter = column.Ordinal;
continue;
}
}
}
如果我们可以转换最后一个数据表(如第二个数据表或任何击球手选项),任何帮助都会很有用。提前致谢。
【问题讨论】:
-
您可以使用 LINQ 并使用
.GroupBy()。这将返回DSC SW上的分组,其中所有元素都按所述值分组。 -
听起来你需要旋转你的数据表。这是一个例子。 stackoverflow.com/questions/12866685/…
-
您希望在每行 x 列中获得什么值?
标签: c# asp.net linq gridview datatable