如何从单个 DataRow 元素中提取值数组?
How to extract an array of values from a single DataRow element?
我在搜索这个时遇到了问题,因为术语数组给了我一百万个不相关的结果,重点是将整个 DataRow
转换为数组。下面是一些简单的示例代码。 drUser
是一个 DataRow
对象。
User dcUser = new User();
dcUser.UserID = Convert.ToInt32(drUser["user_id"].ToString());
这给了我一个整数值没问题。但是我在另一个元素中有一个值数组,例如{1, 2, 3, 4, 5}。当我尝试做类似这样的事情时:
dcUser.SystemIDs = drUser["system_ids"].ToString();
它给了我值数组的类型 (System.Int32[]
) 而不是所有实际值。它甚至没有告诉我该结果中元素的数量。我在想我可以做类似的事情:
dcUser.SystemIDs = drUser["system_ids"][0].ToString();
基本上创建一个循环来迭代并获取每个值,但该语法不好。
您可以使用 LINQ 语法构建字符串,假设您希望字符串位于 SystemID 中。由于 drUser["system_ids"]
returns 和 int[]
,我们可以使用:
string res = "";
drUser["system_ids"].ToList().ForEach((int i) => res += i + " ");
也许有更好的方法,不必先创建临时变量并直接返回结果。
如果你不希望这是一个 space 分隔的字符串,为什么不让 SystemIDs 成为一个 int[]
并直接将 drUsers["system_ids"]
存储在其中?
我最终用这段代码得到了值:
User dcUser = new User();
int[] anSystemIDs = (int[])drUser["system_ids"];
string strSystemIDs = "";
dcUser.UserID = Convert.ToInt32(drUser["user_id"].ToString());
for (int i = 0; i < anSystemIDs.Length ; i++)
{
strSystemIDs += anSystemIDs[i].ToString() + ", ";
}
dcUser.SystemIDs = strSystemIDs.Substring(0, strSystemIDs.Length - 2);
我在搜索这个时遇到了问题,因为术语数组给了我一百万个不相关的结果,重点是将整个 DataRow
转换为数组。下面是一些简单的示例代码。 drUser
是一个 DataRow
对象。
User dcUser = new User();
dcUser.UserID = Convert.ToInt32(drUser["user_id"].ToString());
这给了我一个整数值没问题。但是我在另一个元素中有一个值数组,例如{1, 2, 3, 4, 5}。当我尝试做类似这样的事情时:
dcUser.SystemIDs = drUser["system_ids"].ToString();
它给了我值数组的类型 (System.Int32[]
) 而不是所有实际值。它甚至没有告诉我该结果中元素的数量。我在想我可以做类似的事情:
dcUser.SystemIDs = drUser["system_ids"][0].ToString();
基本上创建一个循环来迭代并获取每个值,但该语法不好。
您可以使用 LINQ 语法构建字符串,假设您希望字符串位于 SystemID 中。由于 drUser["system_ids"]
returns 和 int[]
,我们可以使用:
string res = "";
drUser["system_ids"].ToList().ForEach((int i) => res += i + " ");
也许有更好的方法,不必先创建临时变量并直接返回结果。
如果你不希望这是一个 space 分隔的字符串,为什么不让 SystemIDs 成为一个 int[]
并直接将 drUsers["system_ids"]
存储在其中?
我最终用这段代码得到了值:
User dcUser = new User();
int[] anSystemIDs = (int[])drUser["system_ids"];
string strSystemIDs = "";
dcUser.UserID = Convert.ToInt32(drUser["user_id"].ToString());
for (int i = 0; i < anSystemIDs.Length ; i++)
{
strSystemIDs += anSystemIDs[i].ToString() + ", ";
}
dcUser.SystemIDs = strSystemIDs.Substring(0, strSystemIDs.Length - 2);