【问题标题】:How can I get type double array from List<string>? [duplicate]如何从 List<string> 获取类型 double 数组? [复制]
【发布时间】:2016-05-09 08:52:00
【问题描述】:
var array1 = (from ir in PMEC.InterestRateSet
              select new List<string> { ir.Tenor.ToString() }).ToList();

var array2 = (from ir in PMEC.InterestRateSet
              select new List<string> { ir.Rate.ToString() }).ToList();

array1.AddRange(array2);

var array = array1.ToArray();

比如array1有6个数字,array2有6个数字,那么合并后array有12个数字。

那我应该怎么做才能得到 double 类型的数组呢?

【问题讨论】:

  • 你为什么将你的名单命名为array
  • 确实——你需要一个数组还是一个列表?
  • 谢谢大家的回复!

标签: c# linq list


【解决方案1】:

如果TenorRate 已经是double 属性,则不应将它们转换为字符串。

List<double> tenorList = PMEC.InterestRateSet
    .Select(irs => irs.Tenor) 
    .ToList();
List<double> rateList = PMEC.InterestRateSet
    .Select(irs => irs.Rate) 
    .ToList();
List<double> tenorRateList = tenorList.Concat(rateList).ToList();
// or...
tenorList.AddRange(rateList); // modifies first list

但这似乎毫无意义,即使InterestRateSet 中只有 6 个对象,您的样本中也会有 12 个双精度对象。一次选择两个属性会更好:

var tenorRateList = PMEC.InterestRateSet
    .Select(irs => new { Tenor = irs.Tenor, Rate =irs.Rate} ) 
    .ToList(); // list of anonymous type 

一般来说,如果您有一个字符串并且您想将其转换为双重使用double.Parsedouble.TryParse

【讨论】:

  • 嗨蒂姆,非常感谢您的回复。我是初学者。如果我一次选择它们,如何将匿名类型的 TenorRateList 更改为 double 类型的数组(即第一列中有六个 double 类型,第二列中有六个)?谢谢你。 @蒂姆施梅尔特
  • 嗨蒂姆,如果我使用上面的代码,它会说“无法将类型 List 转换为 List”。该属性可以为空。现在怎么修?谢谢。
  • 您必须选择 nullable 的 Value 属性才能获得双精度。但是如果它为空,你想取什么值?如果您想将空值视为零: .Select(irs => irs.Rate ?? 0)
【解决方案2】:

如果我理解正确,您希望将字符串列表解析为双精度列表...

var result = array1.Select(i => double.Parse(i)).ToList();

【讨论】:

  • 嗨达斯,谢谢您的回复!我尝试了你的方法,但是代码“double.Parse(i)”出现了一些错误。它说“'double.Parse(string)' 的最佳重载方法匹配有一些无效参数”。如何解决?谢谢。
  • 嗨达斯,也许是因为它们可以为空?如何解决?我现在不想更改我的实体属性并再次生成数据库。
【解决方案3】:
List<double> ListOfDouble =(from str in ListOfString let d=double.Parse(str) select d).ToList();

【讨论】:

    【解决方案4】:

    应该是这样的:

    var result = array1.Select(i => i==null?0;double.Parse(i)).ToList();
    

    【讨论】:

      猜你喜欢
      • 2023-01-10
      • 1970-01-01
      • 2011-03-18
      • 2021-08-05
      • 2021-09-18
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2021-02-15
      相关资源
      最近更新 更多