gpt4 book ai didi

c# - 使用 linq 从 select new 返回多行

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:36 25 4
gpt4 key购买 nike

我们需要将数据从表中的行转置到输出表,以便为输入表中的每一行返回多行。在输出的每一行中提取数据的逻辑取决于值是否存在于输入行的给定列中。

例如

输入表

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;
}

但这需要我遍历每个附加值列。我可以避免这种情况,只传递一个委托(delegate),以便“选择新输出行”返回多行吗?

最佳答案

像这样创建一个函数:

public IEnumerable<OutputRow> GetOutputRows(InputRow input)
{
if ( ** some condition on input.D ** )
yield return new OutputRow(inputRow, *delegateToProcessor*);
if ( ** some condition on input.E ** )
yield return new OutputRow(inputRow, *delegateToProcessor*);
if ( ** some condition on input.F ** )
yield return new OutputRow(inputRow, *delegateToProcessor*);
}

你的查询是这样的:

var outputRows = from inputRow in inputTable.AsEnumerable()
from row2 in GetOutputRows(inputRow)
select row2;

关于c# - 使用 linq 从 select new 返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com