0

我有以下 linq 查询

 foreach (var row in nodes.
      Select(tr => tr.Elements("td")
       .Select(td => td.InnerText.TrimEnd())
       .ToArray()))
{
   mydatatable.Rows.Add(row);
}

我可以根据其他数组索引的值将元素添加到数组中,例如 linq 语法中的算术计算,而不必再次循环吗?

例如,结果数组看起来像["xx","9.4",1.4"],我正在尝试添加另一个元素,例如第二个元素乘以第三个元素,所以它看起来像["xx","9.4","2","18.8"]并且肯定它是字符串格式,所以需要转换为 double 然后相乘再次串起来

4

1 回答 1

1

在这种情况下,您不需要数组。考虑并在性能、可读性和访问IList<T>之外进行这些计算。LINQ

IList<int> rows = nodes.Select(tr => tr.Elements("td")).Select(td => Convert.ToInt32( td.InnerText.TrimEnd())).ToList();
rows.Add(rows[1] * rows[2]);

注意:我知道您可能没有整数,出于我投射的示例代码的目的,否则您无法相乘。

IList<string> strs = nodes.Select(tr => tr.Elements("td")).Select(td => td.InnerText.TrimEnd()).ToList();
var ints = strs.Select(str => str.TryGetInt()).Where(i => i.HasValue).Select(i => i.Value);
strs.Add((ints[0] * [ints[1]).ToString());

public static class Extensions
{
  public static int? TryGetInt(this string item)
  {
    int i;
    bool success = int.TryParse(item, out i);
    return success ? (int?)i : (int?)null;
  }
}
于 2013-03-12T09:06:39.957 回答