使用下面的代碼我需要連接鍵和值,但編輯屬性應該添加到字符串只是在開始(只是在第一次),應該如何我這樣做?我試圖找到沒有成功的當前和列表索引...任何想法?只是在循環的第一個迭代中增加值
string Meassage = null;
foreach (var current in PropList)
{
Meassage = "edit:" + current.Key + "=" + current.Value;
}
使用下面的代碼我需要連接鍵和值,但編輯屬性應該添加到字符串只是在開始(只是在第一次),應該如何我這樣做?我試圖找到沒有成功的當前和列表索引...任何想法?只是在循環的第一個迭代中增加值
string Meassage = null;
foreach (var current in PropList)
{
Meassage = "edit:" + current.Key + "=" + current.Value;
}
寫入鍵值對的列表進入你的循環Message
,然後預掛起"edit:"
它的盡頭,就像這樣:
foreach (var current in PropList) {
Message += current.Key + "=" + current.Value + " ";
}
Message = "edit:" + Message;
注意,這是不這樣做的一個有效的方法:而不是追加值string
,你可以使用StringBuilder
或string.Join
方法:
Message = "edit:" + string.Join(" ", PropList.Select(current => current.Key + "=" + current.Value));
var Proplist = new Dictionary<int, string>();
Proplist.Add(1, "test1");
Proplist.Add(2, "test2");
var first = Proplist.First();
int key = first.Key;
string Message = null;
foreach (var current in Proplist)
{
if (first.Key == current.Key)
{
//do only one
}
else
{
Message = "edit:" + current.Key + "=" + current.Value;
}
}
您能否添加一些關於您的答案的其他信息?這可以在未來幫助其他人 – Max
另一種方法使用LINQ將是對PropList
運行Aggregate
(因爲是集合類型是LINQ兼容)做到這一點:
string message = PropList.Count > 0
? PropList.Aggregate("edit:", (agg, current) => agg + current.Key + "=" + current.Value)
: null;
當與性能/內存使用情況而言它會使用StringBuilder
減少內存分配的數量也是一個好主意,但我想這不是一個必需的想法。
只是爲了完整性起見,你可以做上面使用StringBuilder
還有,我個人比較喜歡簡潔:
string message = PropList.Count > 0
? PropList.Aggregate(new StringBuilder("edit:"),
(builder, current) => builder.Append(current.Key).Append("=").Append(current.Value)).ToString()
: null;
你可能會考慮'Message'前面用'「編輯:」'僅在' PropList'包含任何東西,即如果PropList是空的,Message也是。 – alzaimar