0

これは非常に基本的なことですが、次の概念をプログラミングするより良い方法があるかどうか疑問に思っていました。

 for (int j = 0; j < node.ChildNodes[i].Attributes.Count; j++)
                {
                    if (j != 0) row.Cells[1].Value += ", ";
                    row.Cells[1].Value += node.ChildNodes[i].Attributes[j].Name;
                 }

基本的に、C# のノードをテーブルに出力しています。各属性名をコンマで区切ってください。問題は、明らかにループの最初のインスタンスで、その前にコンマを付けたくないということです。つまり、単に

row.Cells[1].Value +=  ", " + node.ChildNodes[i].Attributes[j].Name;

それ以外の場合、セルの出力は次のようになります。

, name, day

それ以外の

name, day

したがって、これは機能しますが、特にこのループは再帰メソッドでネストされているため、ループするたびにこれが実際にループの最初の反復であることを確認するのはコンピューター時間の無駄のようです。これを行うより良い方法はありますか?

(for ループ条件の node.ChildNodes[i].Attributes.Count が 0 になる可能性があることに注意してください。つまり、node(xmlNode である) は子ノードを持たない可能性があるため、ループは子供も。)

これをうまく説明できたと思います!

4

3 に答える 3

4

試すstring.Join

var commaSeperated = string.Join(", ", node.ChildNodes[i].Attributes.Select(a => a.Name));
于 2013-08-22T12:01:23.980 に答える
0

ループで実行したい場合は、2 回目の繰り返しから始めます。

string result = array[0];
for(int i = 1; i < array.Length; i++)
    result += ", " + array[i];

それが一般的な考え方です

于 2013-08-22T12:03:01.970 に答える