我的应用程序中有一个循环。代码如下: -
foreach (DataRow dr in dt.Rows)
ColorNames +=dr["ColorName"].ToString() + "\n";
但我不想\n
在最后添加Datarow
。有什么建议怎么做吗?
ColorNames = String.Join("\n", dt.Rows.Select(dr => dr["ColorName"].ToString()));
这是更新版本(忘记了需要转换为 Enumerable ):
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 循环并检查循环内的所有索引,直到最后。添加 \n 并且在最后一个索引中不要添加 \n
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";
}