2012-06-11 24 views
14

Bir defada linq foreach döngüsünü kullanarak 2 alanı güncelleyebilir miyim? Örnek snippet: Adı, E-postası, CreateTime, LastUpdateTime alanları olan bir kullanıcı hesabım var. Tüm kullanıcılar için CreateTime ve LastUpdateTime öğelerini sıfırlamam gerekiyor.linq foreach kullanarak 2 alanları güncelleştirin

i

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

bunun yerine tek kullanarak linq foreach döngüsünde yapabilirim aşağıdaki gibi 2 çağrıları kullanıyorum güncellemek için?

+0

evet bunu yapabilirsiniz. – Reniuz

+0

Bu LINQ DEĞİLDİR. – leppie

+7

Linq parçasını almasam da, düşüşü anlamıyorum. OP, yepyeni bir kullanıcıyı öğrenmek ve indirmek için açık bir şekilde yardımcı olmaya çalışıyor. Anlayabildiğim kadarıyla, sorunun içindeki tüm normal unsurlar var, değil mi? – Maverik

cevap

39

Kuyusu deneyebilirsiniz.

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

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

Gerçekten net değil: Eğer da tüm güncelleştirmeleri bir tutarlı zaman kullanmak isteyebilir, ancak

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

: Ama evet, bir açıklama gövdesini kullanarak lambda ifade oluşturabilir neden bunu bu şekilde elde etmek istiyorsun. Bunun yerine bir foreach döngü kullanarak öneririm:

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

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

Bkz Eric Lippert'ın en blog post on foreach vs ForEach Bu konuda daha fazla düşünceler için.

8

bu LINQ kullanarak değil edilir Aslında LINQ değil, ama bu olduğunu varsayarak, başlamak

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