【发布时间】:2011-07-02 04:57:24
【问题描述】:
我有一个数据行。我可以使用dataRow.ItemArray 类型的属性object[] 来获取其中的项目。
我需要将其转换为String[] 或List<String>
我看到了ToArray<> 和ToList<> 方法。但不知道如何使用。请帮助。
提前致谢
【问题讨论】:
我有一个数据行。我可以使用dataRow.ItemArray 类型的属性object[] 来获取其中的项目。
我需要将其转换为String[] 或List<String>
我看到了ToArray<> 和ToList<> 方法。但不知道如何使用。请帮助。
提前致谢
【问题讨论】:
ToArray 和 ToList 不会完全满足您的需求,因为它们只会返回对象数组或列表。您需要先将数据按摩成字符串,Select 可以提供帮助。试试这个:
dataRow.ItemArray.Select(i => i == null ? string.Empty : i.ToString()).ToArray();
【讨论】:
"" + i 在这种情况下,因为它与三元 w.r.t 具有相同的效果。空值——但风格主观:)
List<string> strList = objArray.Cast<String>();
您可能需要先检查空值:
List<string> strList = objArray.Select( o => o == null ? String.Empty : o.ToString() ).ToList();
【讨论】:
您可以使用System.Array.ConvertTo 和System.Convert.ToString 作为代理。
【讨论】:
根据 dataRow.ItemArray 中的实际对象,您有两种选择
如果 object[] 中实际上存在字符串对象,则可以明智地转换元素。
dataRow.ItemArray.OfType<string>().ToList();
但如果对象是另一种类型,例如 int 或其他类型,则需要将其转换为字符串(在此示例中为 .ToString(),但在您的情况下可能需要其他自定义方法
dataRow.ItemArray.Select(o => o.ToString()).ToList();
编辑:
如果您不需要明确地使用List<string> 或string[],则可以将.ToList() 留出,而改为使用IEnumerable<string>。
【讨论】:
null/DBNull,因为这些情况比较常见(根据我的经验)。
object[] a = new object[10];
string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString())
(你要的就是第二行)
【讨论】: