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"]になります。たとえば、2 番目の要素と 3 番目の要素の乗算など、別の要素を追加しようとしてい["xx","9.4","2","18.8"]ます。再び弦に

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 に答える