You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#:从分组后的DataTable中获取ItemArray[0]的方法咨询

获取DataRow中ItemArray[0]内容的解决方案

嘿,我来帮你搞定这个问题~要拿到item.ItemArray[0]的内容其实很直接,咱们结合你的代码场景一步步来:

1. 直接获取唯一ID

你只需要直接访问item.ItemArray[0]就能拿到那个唯一ID的值了,比如:

// 把唯一ID赋值给变量,方便后续使用
var uniqueId = item.ItemArray[0];

2. 结合你的代码场景调整

看你的代码是要把数据整理成Dictionary<string, object>格式的行,那咱们可以把唯一ID和第二个元素里的属性都整合进去:

情况1:第二个元素是自定义对象

如果item.ItemArray[1]是一个包含所有属性的自定义类对象,用反射就能把属性拆成键值对:

var dataSet = ToDataSet(rows.GroupBy(a => a["UniqueID"]).ToDictionary(gdc => gdc.FirstOrDefault()).ToList());
DataTable dt1 = dataSet.Tables[0];
foreach (DataRow item in dt1.Rows) {
    var row = new Dictionary<string, object>();
    
    // 添加唯一ID到字典
    var uniqueId = item.ItemArray[0];
    row.Add("UniqueID", uniqueId);
    
    // 解析第二个元素里的属性
    var propertyObj = item.ItemArray[1];
    if (propertyObj != null)
    {
        foreach (var prop in propertyObj.GetType().GetProperties())
        {
            row.Add(prop.Name, prop.GetValue(propertyObj));
        }
    }
    
    rows.Add(row);
}

情况2:第二个元素本身就是字典

如果item.ItemArray[1]已经是Dictionary<string, object>类型,直接遍历添加更简单:

var dataSet = ToDataSet(rows.GroupBy(a => a["UniqueID"]).ToDictionary(gdc => gdc.FirstOrDefault()).ToList());
DataTable dt1 = dataSet.Tables[0];
foreach (DataRow item in dt1.Rows) {
    var row = new Dictionary<string, object>();
    
    // 添加唯一ID
    row.Add("UniqueID", item.ItemArray[0]);
    
    // 添加属性字典里的所有键值对
    var propertyDict = item.ItemArray[1] as Dictionary<string, object>;
    if (propertyDict != null)
    {
        foreach (var kvp in propertyDict)
        {
            row.Add(kvp.Key, kvp.Value);
        }
    }
    
    rows.Add(row);
}

3. 单纯使用唯一ID的场景

如果你只是需要拿到这个值做其他操作(比如打印、判断),直接用就行:

// 打印唯一ID
Console.WriteLine($"当前行的唯一ID:{item.ItemArray[0]}");

内容的提问来源于stack exchange,提问作者SarrahSG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:24:02