为什么无法将List <decimal>转换为List <int>?</int> </decimal>

时间:2015-01-23 13:10:43

标签: c# generics

以下代码提供了InvalidCast例外

int newValue = new List<decimal>() { 6m }.Cast<int>().FirstOrDefault();

即使decimal可以投放int,为什么不能在列表中完成?

编辑: 为了澄清这个问题,我想知道为什么等式的演员部分会引发异常。刚刚运行new List<decimal>() { 6m }.Cast<int>().ToList()也会产生InvalidCast异常

1 个答案:

答案 0 :(得分:5)

你需要:

new List<decimal>() { 6m}.Select(d => (int)d).ToList<int>();

new List<decimal>() { 6m}.ConvertAll(d => (int)d);

Select与任何IEnumerable一起使用,ConvertAll仅适用于List

当您需要处理(例如)数组列表的成员时,应该使用

.Cast,就好像它们是强类型一样。

感谢@hvd纠正我