2009-09-02 7 views
0

linq 메서드 내에서 조건에 따라 새 값을 지정하면서 모든 결과를 유지하면서 다음과 같은 작업을 수행하려면 어떻게해야합니까?Linq에서 SQL 메서드로의 조건부 할당

int x= 100; 

var results= from r in Results where r.id==id select r 
       { if r.value==x set r.result="Found"} 

답변

2

당신은 실제로는 의미가 없습니다. 이상한 질문은 부작용이 없어야합니다. 난 당신이 할 수있는 의미 :

var results = Results.Where(r => r.id == id) 
        .Select(r => { 
          if (r.value == x) 
          { 
           r.result = "Found"; 
          } 
          return r; 
         }; 

내가 일반적으로 생각 ...이 정말이 LINQ에서 작동하지 않습니다

참고 SQL을하지 않으려 것 등

+0

'는 부작용없는'또한 ALL 기타 사항 서보 -OFF 같은 새로운 오브젝트를 생성하지 포함되는 것이다 (R => 새로운 SomeObject의() {식 r.id 이름 = r.name}) 동일한 방법으로 ? – zsharp

+0

@zsharp : 기존 개체에는 영향을주지 않으므로 괜찮습니다. –

1

Linq는 그렇게해서는 안됩니다. 쿼리의 결과를 반복하여 변경합니다.

var results= from r in Results where r.id==id select r; 

foreach (var r in results.ToList()) { if (r.value==x) r.result="Found"; } 
2

검색어를 깨끗하고 부작용없이 유지할 수 있도록 두 번째 패스를 만드는 것이 좋습니다.

int x = 100; 

List<Result> results = (from r in Results 
         where r.id == id 
         select r).ToList(); 

results.ForEach(r => r.result = r.value == x ? "Found" : "Not Found");