我知道我的类型是 ICollection<T>
.我知道T
是原始类型,我知道 T
可以用 ToString()
变成一个字符串.我有 Type
T
的对象(通过使用:Type genericType = info.PropertyType.GenericTypeArguments[0];
我不知道如何将该集合中的项目取出并放入另一个已知类型的集合中(如 List<string>
)。值得庆幸的是,因为我想要的只是它的项目的值作为一个字符串,我可以使用 ToString()
在每一个上,不管它是什么类型(仅限于原语)。
我在我的程序的另一个区域使用它来获取一个类的所有属性的值,只要它们是原始的。我试过类型转换 Type
对象作为 ICollection<T>
的通用参数那没有用。
编辑:我有一个 object
我知道是 ICollection<T>
,但在将其转换为 ICollection<T>
之前,我似乎无法在其上使用 LINQ , 我不能转换成那个因为 T
是“未知”(我已经检索到 Type
的 T
,但我不确定在哪里运行它)。
最佳答案
由于您从通用集合和 ICollection<T>
开始工具 IEnumerable<T>
,您可以使用 LINQ:
List<string> res = coll.Select(elem => elem.ToString()).ToList();
编辑 - 您可以将对象转换为非泛型 IEnumerable
或 ICollection
, 然后调用 Cast<object>
在上面得到一个通用集合(你可以这样做,因为你只想在元素上调用 ToString
):
object obj = new List<int> { 1, 2, 3 };
IEnumerable res = obj as IEnumerable;
List<string> result = res.Cast<object>().Select(e => e.ToString()).ToList();
foreach (var e in result)
Console.WriteLine(e);
关于c# - 如何从 T 未知的 ICollection<T> 中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33669421/