排除循环中的最后一个元素

本文关键字:最后一个 元素 循环 排除 | 更新日期: 2023-09-27 18:33:56

我的应用程序中有一个循环。 代码如下:-

foreach (DataRow dr in dt.Rows)
    ColorNames +=dr["ColorName"].ToString() + "'n";

但我不想在最后Datarow添加'n.有什么建议怎么做吗?

排除循环中的最后一个元素

ColorNames = String.Join("'n", dt.Rows.Select(dr => dr["ColorName"].ToString()));

这是更新的版本(忘记了需要转换为可枚举):

ColorNames = String.Join("'n", dt.AsEnumerable().Select(dr => dr.Field<string>("ColorName")));

Foreach 不处理索引。

选项 1:ForEach 循环

使用 foreach 循环。循环到最后,外部循环做喜欢

ColorNames.Substring(0, ColorNames.Length-1);

选项 2:For 循环

使用 for 循环并检查所有索引的索引内部循环,直到最后。添加 ' 并在最后一个索引中不要添加 '

for (int i = 0; i < dt.Rows.Count; i++)
{
   ColorNames += i < dt.Rows.Count-1 
           ? dr["ColorName"].ToString() + "'n"
           : dr["ColorName"].ToString();
}

for (int i = 0; i < dt.Rows.Count; i++)
   ColorNames += dr["ColorName"].ToString() + (i < dt.Rows.Count-1 ?  "'n": "");

选项 3:LINQ

ColorNames = String.Join("'n", dt.Rows.Select(dr => dr["ColorName"].ToString()));
var colorNamesList = dt.Rows
  .Cast<DataRow>()
  .Select(dr => dr["ColorName"].ToString())
  .ToArray();
var colorNames = String.Join("'n", colorNames);
int count = 0;
foreach (DataRow dr in dt.Rows)
{
    count++;
    ColorNames +=dr["ColorName"].ToString();
    if (count < dt.Rows.Count)
        ColorNames += "'n";
}