我正在循環訪問DataSet的行和列,以便使用管道分隔符寫入文本文件。我有它的工作,除了我需要離開最後一欄的管道。有沒有辦法讓我調整循環來遍歷fields.count-1,然後引用循環之外的最後一個字段?循環訪問數據集
foreach (object item in row.ItemArray)
{
d = d+ item.ToString() + "|";
}
我正在循環訪問DataSet的行和列,以便使用管道分隔符寫入文本文件。我有它的工作,除了我需要離開最後一欄的管道。有沒有辦法讓我調整循環來遍歷fields.count-1,然後引用循環之外的最後一個字段?循環訪問數據集
foreach (object item in row.ItemArray)
{
d = d+ item.ToString() + "|";
}
您可以加入任何的IEnumerable(包括數組)的使用String.Join的內容,如:
var newText = String.Join("|",row.ItemArray);
您可以使用TrimEnd(Char[])
方法類似
d.TrimEnd(new char[]{'|'});
您可以使用:
string.Join("|", row.ItemArray);
循環後:
d = d.remove(d.Count()-1);
這將刪除您的字符串的最後一個字符。
您可以只使用string.Join
方法,如下所示:
string.Join("|", row.ItemArray);
但是,如果你在foreach
循環做其他的邏輯,以及,考慮使用StringBuilder
代替。這在重複連接字符串方面有巨大的性能提升。然後,您可以通過調整它的長度來簡單修剪最終的管道。
var d = new StringBuilder();
foreach (object item in row.ItemArray)
d.Append(item.ToString()).Append("|");
d.Length -= 1;
有沒有必要調用'ToString()'或'ToArray()' –
是的,出於某種原因,我總是我以爲我只需要傳遞一個'string []',我已經更新了我的答案。 – entropic
IEnumerable支持被添加到4.0我認爲。花了我幾年時間來認識到這一點。我想我通過SO問題意識到它...... –
for(int i = 0; i < row.ItemArray.Length; i ++)
{
if(row.ItemArray[i] == row.itemArray[row.itemArray - 1])
{
d = d+ item.ToString();
}
else
{
d = d+ item.ToString() + "|";
}
}
只添加一個分隔符,如果你增加一個值。
for(int i = 0; i < row.ItemArray.Length; i ++)
{
if(d.length == 0)
{
d = item.ToString();
}
else
{
d = d + "|" + item.ToString();
}
}
'String.Join(「|」,row.ItemArray)'? –
您在循環的行中是否有空值? – Steve
@PanagiotisKanavos添加答案。它比另外兩個已經增加了。 – Will