获取循环中的最后一个元素

时间:2013-01-31 05:47:11

标签: c# for-loop texttemplate

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,并在列表的最后一个元素处停止逗号.....

问题是因为我的条件是在其他它正在应用,但在此之后,最后一个元素落入if块,因此它永远不会停止逗号生成。所以有没有可能找到最后一个元素来阻止....完成这个......

或是否有任何解决整个过程的工作PLZ ....谢谢........

2 个答案:

答案 0 :(得分: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 :(得分:0)

你可以做的简单事情是

在for循环中迭代列表并将满足ur条件的元素推送到新列表中,然后迭代新列表,以便您可以使用下面的简单逻辑停止在新元素的最后一个元素的末尾生成逗号在循环中列出。

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

表示感谢..........