Chuyển đổi danh sách thành chuỗi phân tách bằng dấu phẩy


158

Mã của tôi là như sau:

public void ReadListItem()
{
     List<uint> lst = new List<uint>() { 1, 2, 3, 4, 5 };
     string str = string.Empty;
     foreach (var item in lst)
         str = str + item + ",";

     str = str.Remove(str.Length - 1);
     Console.WriteLine(str);
}

Đầu ra: 1,2,3,4,5

Cách đơn giản nhất để chuyển đổi List<uint>thành một chuỗi được phân tách bằng dấu phẩy là gì?


8
String.Joinlà tất cả những gì bạn cần.
asawyer

8
var csvString = String.Join(",", lst);Hãy làm nó.
Mithrandir

2
Đối với bất kỳ ai muốn mở lại cái này, nếu nó không quá cục bộ thì đó là một bản sao: stackoverflow.com/questions/799446/ chủ
Tim Schmelter 19/213

Câu trả lời:


319

Thưởng thức!

Console.WriteLine(String.Join(",", new List<uint> { 1, 2, 3, 4, 5 }));

Tham số thứ nhất: ","
Tham số thứ hai:new List<uint> { 1, 2, 3, 4, 5 })

String.Join sẽ lấy một danh sách làm tham số thứ hai và nối tất cả các phần tử bằng cách sử dụng chuỗi được truyền làm tham số đầu tiên thành một chuỗi.


11
Trong .NET 3.5 trở xuống, bạn phải chuyển đổi rõ ràng danh sách của mình thành mảng lst.ToArray(), vì chưa có quá tải trực tiếp ở đó.
Anton

69

Bạn có thể sử dụng phương thức String.Join để kết hợp các mục:

var str = String.Join(",", lst);

Điều này không làm việc cho tôi. Nó tạo ra tên của bộ sưu tập chứ không phải là các đối tượng trong danh sách.
Rani Radcliff

25

Sử dụng String.Join

string.Join<string>(",", lst );

Sử dụng Linq Aggregation

lst .Aggregate((a, x) => a + "," + x);

1
Tôi có danh sách kiểu int32. Khi tôi sử dụng hàm tổng hợp mà bạn đã đề cập, nó nói "Không thể chuyển đổi biểu thức lambda thành loại ủy nhiệm 'System.Func <int, int, int>' vì một số loại trả về trong khối không được chuyển đổi hoàn toàn thành loại trả về đại biểu" và "Không thể ngầm chuyển đổi loại 'chuỗi' thành 'int'"
Hari

1
@Hari Bạn phải chuyển đổi nó thành giá trị chuỗi trước khi bạn Kết hợp thành chuỗi. Vì vậy, bạn có thể làm một cái gì đó như thế này: list.Select (x => string.Format ("{0}: {1}", x.Key, x.Value)). Tổng hợp ((a, x) => a + " , "+ X);
cược

11

Nếu bạn có một bộ sưu tập ints:

List<int> customerIds= new List<int>() { 1,2,3,3,4,5,6,7,8,9 };  

Bạn có thể sử dụng string.Joinđể có được một chuỗi:

var result = String.Join(",", customerIds);

Thưởng thức!


9

Thực hiện theo điều này:

       List<string> name = new List<string>();

        name.Add("Latif");
        name.Add("Ram");
        name.Add("Adam");
        string nameOfString = (string.Join(",", name.Select(x => x.ToString()).ToArray()));

4
          @{  var result = string.Join(",", @user.UserRoles.Select(x => x.Role.RoleName));
              @result

           }

Tôi đã sử dụng trong MVC Razor View để đánh giá và in tất cả các vai trò được phân tách bằng dấu phẩy.


3

Bạn có thể sử dụng String.Join cho việc này nếu bạn đang sử dụng .NET framework> 4.0.

var result= String.Join(",", yourList);

2

Bạn có thể tham khảo ví dụ dưới đây để lấy một chuỗi chuỗi được phân tách bằng dấu phẩy từ danh sách.

Thí dụ:

List<string> testList= new List<string>();
testList.Add("Apple"); // Add string 1
testList.Add("Banana"); // 2
testList.Add("Mango"); // 3
testList.Add("Blue Berry"); // 4
testList.Add("Water Melon"); // 5

string JoinDataString = string.Join(",", testList.ToArray());

1

Thử

Console.WriteLine((string.Join(",", lst.Select(x=>x.ToString()).ToArray())));

HTH


1

Chúng ta có thể thử như thế này để phân tách các mục nhập bằng dấu phẩy

string stations = 
haul.Routes != null && haul.Routes.Count > 0 ?String.Join(",",haul.Routes.Select(y => 
y.RouteCode).ToList()) : string.Empty;

0

bạn có thể sử dụng google-samples.jar có lớp tiện ích gọi là Joiner

 String commaSepString=Joiner.on(",").join(lst);

hoặc là

bạn có thể sử dụng lớp StringUtils có chức năng gọi là tham gia. Để sử dụng lớp StringUtils, bạn cần sử dụng chung-lang3.jar

String commaSepString=StringUtils.join(lst, ',');

để tham khảo, hãy tham khảo liên kết này http://techno-terminal.blogspot.in/2015/08/convert-collection-into-comma-separated.html


0
static void Main(string[] args){          
List<string> listStrings = new List<string>() { "C#", "Asp.Net", "SQL Server", "PHP", "Angular" };  
string CommaSeparateString = GenerateCommaSeparateStringFromList(listStrings);  
Console.Write(CommaSeparateString);  
Console.ReadKey();}
private static string GenerateCommaSeparateStringFromList(List<string> listStrings){return String.Join(",", listStrings);}

Chuyển đổi danh sách chuỗi thành chuỗi C # được phân tách bằng dấu phẩy


0

bạn cũng có thể ghi đè ToString () nếu mục danh sách của bạn có nhiều hơn một chuỗi

public class ListItem
{

    public string string1 { get; set; }

    public string string2 { get; set; }

    public string string3 { get; set; }

    public override string ToString()
    {
        return string.Join(
        ","
        , string1 
        , string2 
        , string3);

    }

}

để có được chuỗi csv:

ListItem item = new ListItem();
item.string1 = "string1";
item.string2 = "string2";
item.string3 = "string3";

List<ListItem> list = new List<ListItem>();
list.Add(item);

string strinCSV = (string.Join("\n", list.Select(x => x.ToString()).ToArray()));

0
categories = ['sprots', 'news'];
categoriesList = ", ".join(categories)
print(categoriesList)

Đây là đầu ra: mầm, tin tức


0

Bạn có thể phân tách danh sách các thực thể bằng dấu phẩy như thế này:

//phones is a list of PhoneModel
var phoneNumbers = phones.Select(m => m.PhoneNumber)    
                    .Aggregate(new StringBuilder(),
                        (current, next) => current.Append(next).Append(" , ")).ToString();

// Remove the trailing comma and space
if (phoneNumbers.Length > 1)
    phoneNumbers = phoneNumbers.Remove(phoneNumbers.Length - 2, 2);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.