C# 将对象[]转换为字符串[]或列表的最佳方法<;字符串>;

C# 将对象[]转换为字符串[]或列表的最佳方法<;字符串>;,c#,.net,string,types,C#,.net,String,Types,我有一个数据行。我可以使用类型为object[]的属性dataRow.ItemArray获取其中的项。 我需要将其转换为String[]或List 我看到了方法ToArray和ToList。但是我不知道如何使用它。请帮忙 提前感谢ToArray和ToList不会做您想做的事情,因为它们只会返回一个对象数组或列表。您需要首先将数据转换成字符串,Select会有所帮助。试试这个: dataRow.ItemArray.Select(i => i == null ? string.Empty :

我有一个数据行。我可以使用类型为
object[]
的属性
dataRow.ItemArray
获取其中的项。 我需要将其转换为
String[]
List

我看到了方法
ToArray
ToList
。但是我不知道如何使用它。请帮忙


提前感谢

ToArray和ToList不会做您想做的事情,因为它们只会返回一个对象数组或列表。您需要首先将数据转换成字符串,
Select
会有所帮助。试试这个:

 dataRow.ItemArray.Select(i => i == null ? string.Empty : i.ToString()).ToArray();
List strList=objArray.Cast();
您可能需要首先检查空值:

List<string> strList = objArray.Select( o => o == null ? String.Empty : o.ToString() ).ToList();
List strList=objArray.Select(o=>o==null?String.Empty:o.ToString()).ToList();

您可以使用
System.Array.ConvertTo
System.Convert.ToString
作为代理。

根据dataRow.ItemArray中的实际对象,您有两个选项

如果对象[]中确实存在字符串对象,则可以按元素进行强制转换

dataRow.ItemArray.OfType<string>().ToList();
编辑:
如果您不需要显式地使用
列表
字符串[]
,您可以将
.ToList()
保留在外,并获得一个
IEnumerable

 object[] a = new object[10];
 string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString())

(你想要的那行是第二行)

在这种情况下,我更喜欢
“+I
,因为它与三元w.r.t.空值具有相同的效果——但风格主观性:)应该指出,这不会导致可能(或可能不)需要的转换。第二个示例不仅仅是第一个带空值检查的转换,而是一个显式转换。应该指出这一点。+1用于谈论强制和转化。考虑在转换示例中提到/处理<代码> null <代码> /<代码> DBNull < /代码>,因为这是一些常见的情况(在我的经验中)。
dataRow.ItemArray.Select(o => o.ToString()).ToList();
 object[] a = new object[10];
 string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString())