【问题标题】:Can an array of decimal values be assigned to a List of integers可以将十进制值数组分配给整数列表
【发布时间】:2018-03-12 06:10:24
【问题描述】:

是否可以将十进制值数组分配给整数列表?假设我有一个像decimal[]decemalNumbers 这样的数组和一个像List intNumbers 这样的整数列表。 那我可以像intNumbers = decemalNumbers.ToList()那样做作业吗?

如何进行显式转换?有可能吗?

【问题讨论】:

  • List 就像 List intNumbers.
  • 仅当您将decimal 转换为int 时;但是你会丢失你的小数位。
  • 正要提这个
  • 使用类似intNumbers = decemalNumbers.Select(c => (int) c).ToList()
  • @Evk 是的......这已经奏效了。谢谢

标签: c# arrays list


【解决方案1】:

一个简单的 LINQ 解决方案:

decimal[] decimalNumbers = {1.11m,5.22m,3.25m,4.66m,9.13m};
List<int> integerNumbers = decimalNumbers.Select(x => Convert.ToInt32(x)).ToList();

输出:

integerNumbers[0]=1
integerNumbers[1]=5
integerNumbers[2]=3
integerNumbers[3]=5
integerNumbers[4]=9

【讨论】:

  • 是的...这与@Evk 建议的相似
【解决方案2】:

尝试这样,将其转换为 int

// obj is decimal array or list
IEnumerable<int> result = obj.select(d=> decimal.ToInt32(d));

【讨论】:

  • 在十进制[] 上使用Cast&lt;int&gt; 将在您开始迭代时导致 InvalidCastException。您必须使用显式转换,例如Select(d =&gt; (int)d)。有关 Cast 不起作用的解释,请参阅 this answer
  • @mikez - 让我在最后尝试一下...因为演员表是套管价值的替代品
  • @PranayRana Cast&lt;T&gt; 首先将值装箱到object,然后再进行转换,然后导致InvalidCastException
猜你喜欢
  • 2016-03-29
  • 1970-01-01
  • 2020-04-14
  • 2012-09-02
  • 1970-01-01
  • 2014-12-14
  • 2018-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多