如何从单个DataRow元素提取值数组
本文关键字:提取 数组 元素 DataRow 单个 | 更新日期: 2023-09-27 18:11:20
我在搜索这个时遇到了麻烦,因为术语数组给了我一百万个不相关的结果,重点是将整个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"]
返回一个int[]
,因此可以使用:
string res = "";
drUser["system_ids"].ToList().ForEach((int i) => res += i + " ");
也许有更好的方法,而不必首先创建临时变量并直接返回结果。如果你不希望这是一个空格分隔的字符串,为什么不让systemid是一个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);