-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;
}

这样,如果您有另一个元素要添加到结果字符串中,您只需添加一个逗号。如果没有符合您的条件的元素,则字符串将为空。如果只有一个,则您的字符串末尾不会有逗号。如果有多个元素,请在添加新元素之前放置逗号,因此您的字符串也不会有以逗号结尾的风险。

于 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 回答