разделенные запятыми элементы списка с скобками в linq - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть список, и я хочу, чтобы запятая отделялась от элементов с элементом внутри []

Ввод

List<string> inputString = new List<string>() { "1", "2", "3", "4" };

вывод:

 [1],[2],[3],[4]

Кто-нибудь может дать мне знать, как этого добиться без foreach l oop. Я хочу использовать запрос linq.

Я пробовал описанные ниже шаги, но не работал

inputString.Aggregate("", (str1, str2) => '[' + str1+ ']' + "," + '[' + str2+ ']');

Кто-нибудь может мне помочь в этом?

Ответы [ 5 ]

2 голосов
/ 28 апреля 2020

Считаете ли вы решение этой проблемы без использования LINQ?

Если да, то можно использовать следующий подход:

List<string> inputString = new List<string>() { "1", "2", "3", "4" };
string output = "[" + string.Join("],[", inputString) + "]";
2 голосов
/ 28 апреля 2020

Подход с Join() в сочетании с Select()

List<string> inputString = new List<string>() { "1", "2", "3", "4" };
string result = string.Join(",", inputString.Select(x => '[' + x + ']'));

или просто с Join

string result = "[" + string.Join("],[", inputString) + "]";
1 голос
/ 28 апреля 2020

Как вы изначально пытались с агрегатом:

var results = inputString.Select(x => "[" + x + "]")
                         .Aggregate((cur,next) => cur + "," + next);

Live демо

Ваша попытка была не за горами. Его результатом было [[[1],[2]],[3]],[4].
элемент 1 + элемент 2, затем элемент 1/2 + элемент 3. et c ..
Вам просто нужно вычислить [x] перед агрегацией элементов.

Примечание: это не самый эффективный способ объединения, он будет худшим по сравнению со String.Join

0 голосов
/ 28 апреля 2020

Еще проще с интерполяцией строк.

string result = $"[{String.Join("],[", inputString)}]";
0 голосов
/ 28 апреля 2020

или даже если мы хотим столько linq, сколько возможно

var result = inputString.Select(el => $"[{el}],").Aggregate("",(el1,el2)  => el1 + el2).TrimEnd(',');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...