c# - 对象列表到预定类型列表

标签 c#

如何以更通用的方式将原始列表转换为另一个列表。目标类型仅在运行时已知。

我尝试了以下方法,但得到了一个 List<object>填充了 DestinationType 类型的元素。

    public static object ToList(List<object> original,Type destinationType)
    {
        return
            original
                .Select(v => Convert.ChangeType(v, destinationType, CultureInfo.InvariantCulture))
                .ToList();//List<object> is returned, I want a List<destinationType>
    }

最佳答案

试试这个:

var list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(destinationType));

foreach (var element in original)
{
    var converted = Convert.ChangeType(element, destinationType, CultureInfo.InvariantCulture);
    list.Add(converted);
}

return list;

代码创建 List<destinationType> 的实例然后在运行时将所有转换后的元素添加到它并返回它。

关于c# - 对象列表到预定类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220914/

相关文章:

c# - 自动将文件添加为嵌入

c# - 将 VB6 .dll 文件转换为 .net dll

c# - Foreach while 一个值与前一个值相同

c# - Entity Framework : What would cause slow queries after adding a table?

c# - 将字节数组从 Unity 传递到 Android (C++) 进行修改

c# - 使用 LINQ 从列表中选择项目,其中子项包含另一个列表中的项目

c# - 如何使用 AutoMapper 提供枚举到字符串的默认映射?

c# - 我如何查看我的表单当前是否位于其他表单之上?

c# - TcpClient.Dispose() 是否关闭 TcpClient.GetStream?

c# - 为什么即使日期是 JSON 中的 UTC,ServiceStack 也会发出本地时间?