排除最后一个元素,我在我的应用程序的循环。代码如下: -在一个循环
foreach (DataRow dr in dt.Rows)
ColorNames +=dr["ColorName"].ToString() + "\n";
但我不想在最后Datarow
添加\n
。任何建议如何做到这一点?
排除最后一个元素,我在我的应用程序的循环。代码如下: -在一个循环
foreach (DataRow dr in dt.Rows)
ColorNames +=dr["ColorName"].ToString() + "\n";
但我不想在最后Datarow
添加\n
。任何建议如何做到这一点?
的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();
}
OR
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()));
选项3从lazyberezovsky的答案复制和粘贴? – VVS
@Nikhil,选项2看起来不错。 –
@No。我从我的大脑中复制并粘贴它。它的常见做法是将'DataRow'变量作为'dr'作为'DataTable'变量作为'dt'。 –
ColorNames = String.Join("\n", dt.Rows.Select(dr => dr["ColorName"].ToString()));
这里更新版本(忘了投给Enumerable需要):
ColorNames = String.Join("\n", dt.AsEnumerable().Select(dr => dr.Field<string>("ColorName")));
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";
}
[使用每个时确定最后一个循环]的可能重复(http://stackoverflow.com/questions/1068110/identifying-last-loop-when-using-for-each ) –