【发布时间】:2012-11-08 12:51:18
【问题描述】:
我们需要将数据从表中的行转置到输出表,以便为输入表中的每一行返回多行。 在输出的每一行中提取数据的逻辑取决于输入行的给定列中是否存在值。
例如
输入表
A、B、C、D、E、F
输出表
A, B, C, [如果 D 中存在值,则对 D 中的值进行一些操作]
A, B, C, [如果 E 中存在值,则对 E 中的值进行一些操作]
A, B, C, [如果 F 中存在值,则对 F 中的值进行一些操作]
为此,我打算这样做:
private IEnumerable<OutputRow> BuildOutputTable(DataTable inputTable)
{
var outputRows = from inputRow in inputTable.AsEnumerable()
select new outputRow(inputRow, *delegateToProcessor*);
return gbbOutputRows;
}
但这需要我对每个附加值列进行迭代。 我可以避免这种情况并只传递一个委托,以便“选择新输出行”返回多行吗?
【问题讨论】:
-
您的输入表 - 逗号分隔的列表代表 1 行 6 列还是 6 行 1 列?同样,您的输出表是 3 行 4 列吗?不是很清楚。
-
@Jamiec :输入表为 6 列,输出表为 4 列。只是想表明每个输入行会产生 3 个输出行,除了计算列之外具有相同的值。
标签: c# .net linq linq-to-objects