c# - 如何在 C# 中动态转换泛型列表?

标签 c# .net generics list casting

我正在尝试转换 List<object>List<string>动态地。我尝试了几种方法,但找不到解决方案。这是一个显示问题的小样本:

List<object> listObject = new List<object>();
listObject.Add("ITEM 1");
listObject.Add("ITEM 2");
listObject.Add("ITEM 3");

List<string> listString = ¿¿listObject??;

提前致谢!

最佳答案

如果您可以使用 LINQ,那么 Cast方法将做你需要的:

List<string> listString = listObject.Cast<string>().ToList();

您还可以使用 ConvertAll方法,正如 Stan 在他的回答中指出的那样:

List<string> listString = listObject.ConvertAll(x => (string)x);

如果您不使用 C#3,那么您将需要使用“旧”委托(delegate)语法而不是 lambda:

List<string> listString =
    listObject.ConvertAll(delegate(object x) { return (string)x; });

关于c# - 如何在 C# 中动态转换泛型列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1314113/

相关文章:

c# - 从 Task<> 获取对象

c# - 如何为特殊方法抑制 "formatting is specified but argument is not iformattable"消息

.net - 如何为 .NET 可移植类库创建单元测试程序集?

c# - 此 COM 对象是否需要进行垃圾回收?

c# - 最佳实践 : Adding a CLI to Existing Windows Service in . NET/Core

c# - ASP.NET Core 2.2 防止对文档/文件的直接 URL 访问

c# - 您在 mysql 中使用 c# 指定了无效的列序数

java - 使用 Retrofit 和 GSON 将复杂 JSON 映射为 Java 对象的正确方法

java - 使用 Gson 将 Json 解析为具有通用字段的项目列表

swift - 无法在 Swift 中使用 KeyType 类型的参数列表调用方法