Если вы собираетесь делать подобные вещи часто, то для этого нужно создать свой собственный метод расширения. Нижеприведенная реализация позволяет сделать эквивалент string.Join(", ", arrayOfStrings)
, где arrayOfStrings может быть IEnumerable<T>
, а разделителем может быть любой объект вообще. Это позволяет сделать что-то вроде этого:
var names = new [] { "Fred", "Barney", "Wilma", "Betty" };
var list = names
.Where(n => n.Contains("e"))
.Join(", ");
Две вещи, которые я люблю об этом являются:
- Это очень читаемый в контексте LINQ.
- Это довольно эффективно, потому что он использует StringBuilder и позволяет избежать повторного вычисления перечисления.
public static string Join<TItem,TSep>(
this IEnumerable<TItem> enuml,
TSep separator)
{
if (null == enuml) return string.Empty;
var sb = new StringBuilder();
using (var enumr = enuml.GetEnumerator())
{
if (null != enumr && enumr.MoveNext())
{
sb.Append(enumr.Current);
while (enumr.MoveNext())
{
sb.Append(separator).Append(enumr.Current);
}
}
}
return sb.ToString();
}
Просто новый TableRow для вставляемых значений? – spender
Как работает 'IEnumerable' с методом join, который принимает строки, другими словами, как вы на самом деле называете существующий метод? Я не совсем понимаю, что вы ищете здесь. –
В настоящее время я не вызываю 'String.Join'. Просто ищет такую же функциональность - вставка разделителя между элементами массива – abatishchev