#c# #asp.net
#c# #asp.net
Вопрос:
Я использую следующий код, и мне нужно объединить ключ и значение, но свойство edit должно быть добавлено к строке только в начале (только в первый раз), как мне это сделать? Я безуспешно пытаюсь найти индекс для текущего и списка…есть идея?
string Meassage = null;
foreach (var current in PropList)
{
Meassage = "edit:" current.Key "=" current.Value;
}
Ответ №1:
Запишите список пар ключ-значение в Message
свой цикл, а затем отложите "edit:"
к нему в конце, вот так:
foreach (var current in PropList) {
Message = current.Key "=" current.Value " ";
}
Message = "edit:" Message;
Обратите внимание, что это не эффективный способ сделать это: вместо добавления значений в string
, вы могли бы использовать метод StringBuilder
or string.Join
:
Message = "edit:" string.Join(" ", PropList.Select(current => current.Key "=" current.Value));
Комментарии:
1. Вы могли бы рассмотреть возможность предшествования
Message
с"edit:"
только в том случае, еслиPropList
что-либо содержит, т. Е. еслиPropList
это пустое, то иMessage
.
Ответ №2:
Другим способом сделать это с использованием LINQ было бы запустить Aggregate
на PropList
(учитывая, что это тип коллекции, совместимый с 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;
Ответ №3:
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;
}
}
Комментарии:
1. Не могли бы вы добавить некоторую дополнительную информацию о вашем ответе? Это может помочь другим в будущем