排除最後一個元素,我在我的應用程序的循環。代碼如下: -在一個循環
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 ) –