2010-10-17 42 views
38

Tôi đang tìm kiếm một cách để thay đổi đoạn mã sau:nhiều đường foreach vòng lặp trong LINQ/lambda

foreach (Contact _contact in contacts) 
{ 
    _contact.ID = 0; 
    _contact.GroupID = 0; 
    _contact.CompanyID = 0; 
} 

Tôi muốn thay đổi điều này bằng cách dùng LINQ/lambda vào một cái gì đó tương tự như:

contacts.ForEach(c => c.ID = 0; c.GroupID = 0; c.CompanyID = 0); 

Tuy nhiên, điều đó không hiệu quả. Có cách nào để làm nhiều dòng trong một linq foreach khác hơn là bằng cách viết một chức năng để làm điều này trong một dòng?

Trả lời

61
contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; }); 

Nó không liên quan gì đến LINQ; nó chỉ là một phương thức ẩn danh đơn giản được viết bằng cú pháp lambda được chuyển tới hàm (đã tồn tại từ 2.0, trước LINQ).

+0

Đơn giản, cảm ơn! – shlomoa

3

LINQ là viết tắt của Language Integrated Query - có nghĩa là nó được thiết kế cho truy vấn - ví dụ: trích lục hoặc chuyển một chuỗi thành một tập mới, không phải thao tác với bản gốc.

ForEach method hangs off List<T> và là lối tắt thuận tiện để tìm kiếm; không có gì đặc biệt.

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