-1
for (int ixIdx = 0; ixIdx < tblAttributes.Count; ixIdx++)
      {
          bool Exclude = ExcludeColumn(tblAttributes[ixIdx].Name);
                  bool Primary = Primary(tblAttributes[ixIdx].Name);
                  if (Exclude || Primary)
          {
              continue;
          }
          else
          {
    #>    [<#= tblAttributes[ixIdx].MdlPart.InternalName #>]<#= ixIdx == tblAttributes.Count-1 ? "" : "," #>
    <#    }
        }

上記のコードは texttemplate ファイルにあります。私がやろうとしているのは、リスト tblAttributes の各要素に対してコンマを生成することだけです。それらはelseに入り、リストの最後の要素でコンマを止めます.....

問題は、私の条件が適用されているelseにあるためですが、その後、最後の要素がifブロックに落ちているため、コンマの生成が停止することはありません。それで、elseブロックに来る最後の要素を見つける可能性はありますか....これを成し遂げるために...

または、プロセス全体の回避策はありますか plz ....ありがとう........

4

2 に答える 2

3

コンマの問題については、一般的な目的で次のようにすることができます。

string res = "";
for(int i = 0; i < list.Count - 1; i++)
    res += list[i] + ", ";
if (list.Count > 0) res += list[list.Count - 1];

あなたの特定のケースでは(すべての要素が文字列に追加されるわけではないため):

string res = "";
int i = 0;
while (i < tblAttributes.Count && (ExcludeColumn(tblAttributes[i].Name) || (Primary(tblAttributes[i].Name)))
    i++;

if (i < tblAttributes.Count) res += tblAttributes[i].Name;

for (; i < tblAttributes.Count; i++)
{
    if (!ExcludeColumn(tblAttributes[i].Name) && !(Primary(tblAttributes[i].Name))
        res += ", " + tblAttributes[i].Name;
}

そうすれば、結果の文字列に追加する別の要素がある場合にのみカンマを追加できます。条件に一致する要素がない場合、文字列は空になります。1 つしかない場合、文字列の末尾にカンマはありません。複数の要素がある場合は、新しい要素を追加する前にコンマを配置するため、文字列がコンマで終わるリスクもありません。

于 2013-01-31T05:51:22.733 に答える
0

あなたができる簡単なことは

forループでリストを反復し、条件を満たす要素を新しいリストにプッシュしてから、新しいリストを反復して、以下の単純なロジックを使用して、新しいリストの最後の要素の最後にあるコンマの生成を停止できるようにしますループ。

for(int i = 0; i < newlist.Count; i++)
{ 
   <#= newlist[i] #><#= i == newlist.Count - 1 ? "" : "," #>
}

ありがとうございます

于 2013-01-31T16:03:06.733 に答える