【问题标题】:Add string of arraylist in Linq在 Linq 中添加 arraylist 字符串
【发布时间】:2012-09-11 10:42:00
【问题描述】:

我需要在 linq 中添加项目数组列表。下面是我的示例代码。

string[] _str = ("1.21,2.02,3.14,4.951,5.156").ToString().Split(',');
double Sum = 0.0;
for (int i = 0; i < _str.Length; i++)
{
  if (_str[i].ToString() != ",")
     Sum = Sum + Convert.ToDouble(_str[i]);
}

我在 for 循环中完成了上述代码,以获取数组列表中所有项目的总和。我需要在 linq 中转换相同的操作。请任何人帮我解决这个问题,因为我是 linq 的新手。

提前致谢。

【问题讨论】:

  • 为什么需要在 LINQ 中这样做?
  • 第一行太冗长了。

标签: c# linq for-loop


【解决方案1】:

使用Sum 方法:

string[] _str = "1.21,2.02,3.14,4.951,5.156".Split(',');
var result = _str.Sum(e => Double.Parse(e));

【讨论】:

  • 感谢您的回复,如果假设来自数据库的值是这样的 1.21,2.02,3.14,4.951,5.156, .是否会发生任何代码更改。
  • @Neon 对不起,我不明白你的意思。
【解决方案2】:
string[] _str =  {"1.21","2.02","3.14","4.951","5.156"};
double Sum = 0.0;
for (int i = 0; i < _str.Length; i++)
{
    double.TryParse(_str[i],out val)
}

但是如果你这样做是为了学习 linq

string[] _str = {"1.21","2.02","3.14","4.951","5.156"};
_str.Sum(x => 
    {  
       double val ; 
       if(double.TryParse(x, out val)){
         return val;
       }
       return 0.0;
    });

如果您确定字符串将始终包含有效的数字字符串。然后你可以使用 double.Parse(x)。

【讨论】:

    【解决方案3】:

    你可以试试

    string[] _str = "1.21,2.02,3.14,4.951,5.156".Split(',');
    double Sum = _str.Sum(x=>Convert.ToDouble(x));
    

    【讨论】:

      【解决方案4】:

      试试……

      var _str = _str = ("1.21,2.02,3.14,4.951,5.156").ToString().Split(',');
      var _sum = Array.ConvertAll<String, Double>(_str, Double.Parse).Sum();
      

      另一个班轮,带有方法链接的例子......

      var _sum = "1.21,2.02,3.14,4.951,5.156".Split(',').Sum(x => Double.Parse(x));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 2012-11-06
        相关资源
        最近更新 更多