Làm cách nào để chuyển đổi Mảng thành Danh sách <đối tượng> trong C #?


77

Làm cách nào để chuyển đổi một Arraythành một List<object>trong C #?


13
Tôi không thấy có gì sai trong câu hỏi này .. -5? Có thật không?
Filip Ekberg

6
+1 bởi vì đây là một câu hỏi đơn giản, hiệu quả mà tôi không tìm thấy bản sao trên SO. (Downvoters nên bình luận hoặc xem xét lại.) Stackoverflow.com/questions/1003841/... blog.stackoverflow.com/2009/06/podcast-58
JYelton

Câu trả lời:


105
List<object> list = myArray.Cast<Object>().ToList();

Nếu kiểu của các phần tử mảng là kiểu tham chiếu, bạn có thể loại bỏ .Cast<object>()đồng phương sai giao diện do C # 4 thêm vào tức là một IEnumerable<SomeClass>có thể được coi là một IEnumerable<object>.

List<object> list = myArray.ToList<object>();

29
Hãy chắc chắn bạn đang sử dụng System.Linq
Nestor Ledon

Điều này chỉ hoạt động trong VS2015? Trong VS2012: 'System.Array' không chứa định nghĩa cho 'Cast' và không có phương thức mở rộng nào 'Cast' chấp nhận đối số đầu tiên của kiểu 'System.Array' (bạn có thiếu một chỉ thị using hoặc tham chiếu hợp ngữ không? )
ajeh

Cảm ơn vìList<object> list = myArray.ToList<object>();
samir105

39

Sử dụng hàm tạo: new List<object>(myArray)


2
Một điều thú vị về kiểu này là nó tạo và trả về danh sách, vì vậy bạn có thể thêm nhiều phương thức hơn (ví dụ .Contains(userName)). Hữu ích cho việc nhồi nhét một loạt logic vào một câu lệnh if một dòng :).
Patrick

13

List<object>.AddRange(object[])nên làm thủ thuật. Nó sẽ tránh tất cả các loại phân bổ bộ nhớ vô ích. Bạn cũng có thể sử dụng Linq, giống như sau:object[].Cast<object>().ToList()


10

Phương thức khởi tạo List <> có thể chấp nhận bất cứ thứ gì triển khai IEnumerable, do đó ...

        object[] testArray = new object[] { "blah", "blah2" };
        List<object> testList = new List<object>(testArray);

5
private List<object> ConvertArrayToList(object[] array)
{
  List<object> list = new List<object>();

  foreach(object obj in array)
    list.add(obj);

  return list;
}

3

Nếu mục mảng và mục danh sách giống nhau

List<object> list=myArray.ToList();

Tôi đã phải thêm bằng cách sử dụng System.Linq; để nó hoạt động; không chắc chắn lý do tại sao.
user3752281 14/03/17

2

Tất cả mọi thứ mọi người đang nói đều đúng,

int[] aArray = {1,2,3};
List<int> list = aArray.OfType<int> ().ToList();

sẽ biến aArray thành một danh sách, danh sách. Tuy nhiên, điều lớn nhất mà rất nhiều bình luận còn thiếu là bạn cần phải có 2 câu lệnh sử dụng này ở đầu lớp của bạn

using System.Collections.Generic;
using System.Linq;

Tôi hi vọng cái này giúp được!


1

Bạn cũng có thể khởi tạo danh sách bằng một mảng trực tiếp:

List<int> mylist= new List<int>(new int[]{6, 1, -5, 4, -2, -3, 9});


0

Điều này cho phép bạn gửi một đối tượng:

private List<object> ConvertArrayToList(dynamic array)

0

Đây là phiên bản của tôi:

  List<object> list = new List<object>(new object[]{ "test", 0, "hello", 1, "world" });

  foreach(var x in list)
  {
      Console.WriteLine("x: {0}", x);
  }

0

Bạn có thể thử điều này,

using System.Linq;
string[] arrString = { "A", "B", "C"};
List<string> listofString = arrString.OfType<string>().ToList();

Hy vọng, mã này sẽ giúp bạn.

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.