2012-06-11 28 views
14

Tôi có thể cập nhật 2 trường bằng vòng lặp LINQ foreach cùng một lúc không? Đoạn mã mẫu: Tôi có một userdata với các trường Name, Email, CreateTime, LastUpdateTime. Tôi phải đặt lại CreateTime và LastUpdateTime cho tất cả người dùng.cập nhật 2 trường sử dụng LINQ foreach

Để cập nhật tôi đang sử dụng 2 cuộc gọi như sau

users.ForEach(x => x.CreateTime= DateTime.Now.AddMonths(-1)); 
users.ForEach(x => x.LastUpdateTime = DateTime.Now); 

thay vào đó tôi có thể làm điều đó trong một vòng lặp sử dụng LINQ foreach đơn?

+0

có bạn có thể làm điều đó. – Reniuz

+0

Đây không phải là LINQ. – leppie

+7

Trong khi tôi nhận được phần LINQ không, tôi không hiểu downvote. OP rõ ràng là cố gắng để tìm hiểu và downvoting một người dùng hoàn toàn mới không chính xác là hữu ích. Theo như tôi có thể nói, câu hỏi có tất cả các yếu tố bình thường trong nó, phải không? – Maverik

Trả lời

39

Vâng để bắt đầu với, giả sử đây là , này không đang sử dụng LINQ. Nhưng có, bạn có thể tạo một biểu thức lambda sử dụng một cơ thể tuyên bố:

users.ForEach(x => { 
    x.CreateTime = DateTime.Now.AddMonths(-1); 
    x.LastUpdateTime = DateTime.Now; 
}); 

Tuy nhiên, bạn có thể cũng muốn sử dụng một thời gian phù hợp cho tất cả các bản cập nhật:

DateTime updateTime = DateTime.Now; 
DateTime createTime = updateTime.AddMonths(-1); 

users.ForEach(x => { 
    x.CreateTime = createTime; 
    x.LastUpdateTime = updateTime; 
}); 

Nó không thực sự rõ ràng lý do tại sao bạn muốn đạt được nó theo cách này mặc dù. Tôi sẽ đề nghị sử dụng một vòng lặp foreach thay vì:

DateTime updateTime = DateTime.Now; 
DateTime createTime = updateTime.AddMonths(-1); 

foreach (var user in users) 
{ 
    user.CreateTime = createTime; 
    user.LastUpdateTime = updateTime; 
} 

Xem Eric Lippert của blog post on foreach vs ForEach cho suy nghĩ thêm về điều này.

8

Nó thực sự không LINQ, nhưng bạn có thể thử

users.ForEach(x => { x.CreateTime = DateTime.Now.AddMonths(-1); 
        x.LastUpdateTime = DateTime.Now; }); 
Các vấn đề liên quan