.NET - Объединитесь весь объект списка в выходной строке

Как я могу записать выражение Linq (или что-либо еще), что избранный объект из Списка и присоединяется к ним вместе?

Пример

IList<string> data = new List<string>();

data.Add("MyData1");
data.Add("MyData2");

string result = //some linq query... I try data.Select(x => x + ",");

//result = "MyData1, MyData2"
35
задан Melursus 21 April 2010 в 13:27
поделиться

3 ответа

Почему бы просто не использовать ( String.Join Method )

string joined = String.Join(",", data.ToArray());

Но если это должен быть LINQ, вы можете попробовать

string joinedLinq = data.Aggregate((i, j) => i + "," + j);
71
ответ дан 27 November 2019 в 06:43
поделиться

У вас может возникнуть соблазн использовать Aggregate (), если вы придерживаетесь LINQ

IList<int> data = new List<int>();

data.Add(123);
data.Add(456);

var result = data.Select(x => x.ToString()).Aggregate((a,b) => a + "," + b);

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

String.Join(...) is the best way

В приведенном выше примере, где тип данных НЕ является строкой, вы можете сделать это:

string.Join(",", data.Select(x => x.ToString()).ToArray())
12
ответ дан 27 November 2019 в 06:43
поделиться

Вы можете использовать агрегат, когда вам нужно объединить список в один агрегированный объект.

string s = "";
if(data.Count > 0)
  s = data.Aggregate((a, b) => a + ',' + b);
1
ответ дан 27 November 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: