将对象数组映射到数据表的列
Posted
技术标签:
【中文标题】将对象数组映射到数据表的列【英文标题】:Map an array of objects to a column of a datatable 【发布时间】:2021-09-22 00:59:28 【问题描述】:是否可以将对象数组存储在数据表的列中?
object[] arr1 = new object[] "a", false, 100 ;
DataTable dt = new DataTable();
dt.Columns.Add("Column1");
DataRow row = dt.NewRow();
row["Column1"] = arr1;
dt.Rows.Add(row);
// After
foreach (DataRow rowRead in dt.Rows)
object[] result = rowRead["Column1"];
【问题讨论】:
这闻起来像XY problem。你能解释一下为什么你想这样做吗?您是否真的想解决更深层次的问题,或者您真的对DataTable
的工作原理感到好奇?
你读过documentation吗?
我有一个不断增长的应用程序的 ToolStrip ... 每个选项都是从具有允许授权的数据表中检索的。我已经开始将整个应用程序迁移到小 dll 中。在某些调用 winform 的情况下,使用了参数。所以我需要在有参数或没有参数的情况下调用 DLL。我在数据表的列中需要的那些参数。如果不可能,我会将数据表迁移到列表 您不能将 set 分配给 datatable 列。
您可以将集合转换为字符串并将其分配给列,然后反向执行相同的操作来读取列。
string.Join (Separator, collection)
将集合转换为字符串。
您可以将其输出分配给 DataTable column
。
object[] arr1 = new object[] "a", false, 100 ;
DataTable dt = new DataTable();
dt.Columns.Add("Column1");
DataRow row = dt.NewRow();
row["Column1"] = string.Join(",", arr1);
dt.Rows.Add(row);
// After
foreach (DataRow rowRead in dt.Rows)
object[] result = (rowRead["Column1"].ToString().Split(',')).ToArray<object>();
【讨论】:
我喜欢我的项目的想法。我认为它可以工作。唯一我不知道为什么会发生在我身上的是 row ["Column1"] = string.Join (",", arr1);我大写“False”F。而不是“false”。 对不起。如果我只是阅读文档并从 bool 到 string 第一个字母大写 将数组或列表的组成部分转换为字符串,其中行 ["Column1"] = string.Join (",", arr1); .第一个参数是值分隔符,第二个参数是数组或列表以上是关于将对象数组映射到数据表的列的主要内容,如果未能解决你的问题,请参考以下文章