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
相关产品推荐
相关产品推荐

