2013-10-06 2 views
0

Мои ценности происходят из ComboBox:Добавить запятую между значениями с помощью Linq

2 | 722 | 742 | 762 | 77

я удалить ненужные символы следующим образом:

foreach (var item in checkListBox) 
{ 
    string[] list = item.Split(
     new string[] { "2|" }, 
     StringSplitOptions.RemoveEmptyEntries); 
} 

Результаты моих списков:

"72" 
"74" 
"76" 
"77" 

Мой вопрос:

как можно получить все из указанных выше значений в строке 1 (рядом друг с другом), разделенных запятой как это:

72,74,76,77

?

ответ

1

Как насчет

var result = string.Join(",", item.Split(new string[] { "2|" }, StringSplitOptions.RemoveEmptyEntries)); 
6

Это звучит, как вы просто хотите string.Join:.

string commaSeparated = string.Join(",", list); 

(Обратите внимание, что это не является частью LINQ - это не тот же самый вид «присоединиться», как для соединения нескольких последовательностей Это объединить несколько строк вместе с a separator.)

Пока вы можете сделать это в одном заявлении в соответствии с принятым в настоящее время ответом, я лично рассмотрю возможность оставить существующее заявление и сделать это как отдельный шаг. Это облегчает чтение и отладку кода.

1

Просто используйте Replace непосредственно:

string input = "2|722|742|762|77"; 
var result = input.Replace("2|",",").Trim(','); 
3
String.Join(",",list);​​​​​​​​​​​​​​​​​​​​​​​​​ 

Хотя: а) Это не Linq. б) Как уже упоминалось в другом ответе здесь - в этом случае было бы проще использовать Replace.

Использование Linq:

list.Select(s => s + ",").Aggregate((s, q) => s + q).TrimEnd(','); 
0

Как отмечалось в других ответах, string.Join то, что должно быть использовано здесь. Если вы, однако, настаиваете на LINQ:

var result = list 
    .Skip(1) 
    .Aggregate(
     list.FirstOrDefault() ?? string.Empty, 
     (total, current) => total + "," + current); 
Смежные вопросы