tôi có một danh sách của lớp này:Tạo danh sách với chỉ một thành viên lớp
public class Data
{
public string name {get; set;}
public int width {get; set;}
}
Và tôi muốn thực hiện một phương pháp mà trả về một danh sách các chỉ sở hữu tên. Như thế này:
public List<string> GetAllNames()
{ return MyDataList<name>.ToList(); }
Vì vậy, nếu tôi có danh sách này:
name
= Jon -width
= 10name
= Jack -width
= 25
Tôi muốn danh sách sau:
name
= Jonname
= Jack
Có thể?
LINQ đá! Cảm ơn. – Nick
Như một lưu ý, nếu bạn trả về một Danh sách thì bạn sẽ về cơ bản sao chép toàn bộ danh sách. Điều này có thể mất thời gian/bộ nhớ nếu bạn có một danh sách lớn. Nếu bạn chuyển sang sử dụng IEnumerable và sau đó không làm các .ToList(), sau đó bạn sẽ nhận được một danh sách lười biếng đó là gần như miễn phí để tạo ra, và sẽ tiêu thụ rất ít (<100bytes) của không gian –
@TimothyBaldridge: True. Nó cũng đáng chú ý là nếu bạn đi theo con đường 'IEnumerable', nó sẽ được đánh giá lại mỗi lần bạn lặp lại nó. IEnumerable của bạn cũng trở nên gắn với tập hợp các đối tượng ban đầu, vì vậy nó sẽ ngăn chặn bộ thu gom rác dọn dẹp tất cả các đối tượng 'Dữ liệu' ngay cả khi bạn chỉ định sử dụng tên từ chúng. Hơn nữa, nếu 'MyDataList' thay đổi,' IEnumerable' được trả về sẽ thay đổi và có thể ném một ngoại lệ nếu nó được sử dụng trong một chuỗi riêng biệt. Thường thì không có vấn đề gì trong số này quan trọng, nhưng nó luôn luôn là tốt để hiểu những gì đang xảy ra dưới sự bảo hiểm. – StriplingWarrior