gpt4 book ai didi

c# - 查询 - 基于行的表

转载 作者:搜寻专家 更新时间:2023-10-30 22:02:19 24 4
gpt4 key购买 nike

我无法控制数据在此表中的保存方式。但是,我必须查询表并将类似 pn_id 列的数据合并为一行/记录。

比如当前的数据结构如下,

enter image description here

这里我们用不同的问题 id 重复了相同的 pn_id。根据我的意见,这应该真正保存为一个 pn_id,然后每个问题作为一个单独的列。但是,我必须像这样将以下数据作为一条记录检索。

enter image description here

知道如何做到这一点吗?

谢谢

最佳答案

这是转换算法的一些伪代码。请注意,它需要扫描整个数据集两次;还有其他一些提高效率的机会,例如,如果可以对输入数据进行排序。此外,由于它是伪代码,我没有添加对空值的处理。

var columnNames = new HashSet<string> { "pn_id" };

foreach (var record in data)
columnNames.Add(record.question_id.ToString());

var table = new DataTable();
foreach (var name in columnNames)
table.Columns.Add(new DataColumn(name, typeof(string)));

foreach (var record in data)
{
var targetRecord = CreateNewOrGetExistingRecord(table, record.pn_id);
targetRecord[record.question_id.ToString()] = record.char_value ?? record.date_value.ToString();
}

下面是辅助方法的草图:

DataRow CreateNewOrGetExistingRecord(DataTable table, object primaryKeyValue)
{
var result = table.Find(primaryKeyValue);
if (result != null)
return result;

//add code here to create a new row, add it to the table, and return it to the caller
}

关于c# - 查询 - 基于行的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9898007/

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