2012-06-11 3 views
14

linq foreach 루프를 사용하여 2 개의 필드를 동시에 업데이트 할 수 있습니까? 샘플 코드 조각 : 이름, 이메일, 생성 시간, LastUpdateTime 필드가있는 사용자 데이터가 있습니다. 모든 사용자에 대해 CreateTime 및 LastUpdateTime을 재설정해야합니다.linq foreach를 사용하는 2 개의 필드 업데이트

내가

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

대신 내가 하나의 사용 LINQ의 foreach 루프에서 할 수있는 다음과 같은 두 통화를 사용하고 업데이트하려면?

+0

네, 할 수 있습니다. – Reniuz

+0

이것은 LINQ가 아닙니다. – leppie

+7

나는 linq 부품을 얻지 만, 나는 downvote를 이해하지 못한다. OP는 확실히 새로운 사용자를 배우고 downvoting하려고 노력하고 정확하게 정확하게 도움이되지 않습니다. 내가 말할 수있는 한, 질문에는 그 안에 모든 정상적인 요소가 있습니다. 그렇지 않습니까? – Maverik

답변

39

음을 시도 할 수 있습니다.

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

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

정말 분명하지 않다 : 당신은 모든 업데이트에 대해 하나의 일관된 시간을 사용할 수 있습니다, 그러나

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

:하지만 그래, 당신은 성명 본체를 사용하여 람다 식을 만들 수 있습니다 이 방법을이 방법을 달성하고 싶습니다. 내가 대신 foreach 루프를 사용하는 것이 좋습니다 것입니다 :

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

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

참조 에릭 Lippert의의 blog post on foreach vs ForEach이 더 많은 생각을합니다.

8

는 LINQ를 사용하지, 그것은 실제로 LINQ 아니에요,하지만 당신은이 가정하고, 시작하는

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