超全模态模型 × Harness 升级,升级解锁 ArkClaw,最新支持 DeepSeek-V4 系列与 GLM-5.1
如果需求是把List<object[]>中所有数组的元素全部展开,合并成单一的List<object>,直接用LINQ的SelectMany方法即可,无需关心数组长度:
List<object[]>
List<object>
SelectMany
List<object[]> listOfArrays = dt.Select().Select(row => row.ItemArray).ToList(); List<object> flatList = listOfArrays.SelectMany(arr => arr).ToList();
该方法会遍历每个object[],将内部元素依次加入新列表,适配任意数组长度。
object[]
如果需求是像固定列时那样,把每个object[]转成带有对应列名属性的对象(适配动态列数),可以用ExpandoObject结合DataTable列名实现:
ExpandoObject
List<object[]> listOfArrays = dt.Select().Select(row => row.ItemArray).ToList(); List<object> dynamicObjects = new List<object>(); foreach (var arr in listOfArrays) { dynamic expando = new ExpandoObject(); var expandoDict = (IDictionary<string, object>)expando; for (int i = 0; i < dt.Columns.Count; i++) { expandoDict[dt.Columns[i].ColumnName] = arr[i]; } dynamicObjects.Add(expando); }
每个动态对象的属性名对应DataTable列名,属性值匹配数组元素,完美适配列数动态变化的场景。
若偏好LINQ写法,可封装为方法调用:
public static object ToDynamicObject(DataTable dt, object[] itemArray) { dynamic expando = new ExpandoObject(); var dict = (IDictionary<string, object>)expando; for (int i = 0; i < dt.Columns.Count; i++) { dict[dt.Columns[i].ColumnName] = itemArray[i]; } return expando; } // 调用示例 List<object> dynamicObjects = dt.Select() .Select(row => ToDynamicObject(dt, row.ItemArray)) .ToList();
如果不需要动态属性访问,用Dictionary<string, object>更轻量:
Dictionary<string, object>
List<Dictionary<string, object>> dictList = dt.Select() .Select(row => dt.Columns.Cast<DataColumn>() .ToDictionary(col => col.ColumnName, col => row[col])) .ToList(); // 转为List<object> List<object> objectList = dictList.Cast<object>().ToList();
内容的提问来源于stack exchange,提问作者Amit Bisht
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起
模型再升级,30秒超长叙事, 模态参考扩容
模型自由,工具不限,最新支持 Deepseek-V4 系列、GLM-5.3 系列
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列
大模型19元起,Al应用9.9元畅享,新人首购爆款尽享优惠