2011-02-06 32 views
12

Làm thế nào để chỉnh sửa một mục trong danh sách trong các mã dưới đây:Chỉnh sửa một mục trong danh sách <T>

List<Class1> list = new List<Class1>(); 

int count = 0 , index = -1; 
foreach (Class1 s in list) 
{ 
    if (s.Number == textBox6.Text) 
     index = count; // I found a match and I want to edit the item at this index 
    count++; 
} 

list.RemoveAt(index); 
list.Insert(index, new Class1(...)); 
+0

bạn không thử bất cứ điều gì? –

+0

nếu là ok! vui lòng chuyển đổi thành linq –

+23

** Bạn nên đặt tên cho hộp văn bản của mình **. – SLaks

Trả lời

31

Sau khi thêm một mục vào một danh sách, bạn có thể thay thế nó bằng cách viết

list[someIndex] = new MyClass(); 

Bạn có thể sửa một mục hiện có trong danh sách bằng cách viết

list[someIndex].SomeProperty = someValue; 

EDIT: Bạn có thể viết

var index = list.FindIndex(c => c.Number == someTextBox.Text); 
list[index] = new SomeClass(...); 
+0

thanx. Mã này cho BindingList như thế nào? –

+0

Bởi vì nó có phương pháp FindLastIndex !! –

1
class1 item = lst[index]; 
item.foo = bar; 
13

Bạn không cần phải sử dụng LINQ kể từ List<T> cung cấp các phương pháp để làm điều này:

int index = lst.FindLastIndex(c => c.Number == textBox6.Text); 
if(index != -1) 
{ 
    lst[index] = new Class1() { ... }; 
} 
+0

thanx. Mã này cho BindingList như thế nào? –

+0

Vì phương pháp FindLastIndex !! –

4
public changeAttr(int id) 
{ 
    list.Find(p => p.IdItem == id).FieldToModify = newValueForTheFIeld; 
} 

Với:

  • IdItem là id của phần tử bạn muốn để sửa đổi

  • FieldToModify là Trường của mục bạn muốn cập nhật.

  • NewValueForTheField chính xác là giá trị mới.

(Nó hoạt động hoàn hảo cho tôi, thử nghiệm và triển khai)

+0

Điều này phải được chấp nhận trả lời. – Stuart

Các vấn đề liên quan