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"}
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"}
당신은 실제로는 의미가 없습니다. 이상한 질문은 부작용이 없어야합니다. 난 당신이 할 수있는 의미 :
var results = Results.Where(r => r.id == id)
.Select(r => {
if (r.value == x)
{
r.result = "Found";
}
return r;
};
내가 일반적으로 생각 ...이 정말이 LINQ에서 작동하지 않습니다
참고 SQL을하지 않으려 것 등
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"; }
검색어를 깨끗하고 부작용없이 유지할 수 있도록 두 번째 패스를 만드는 것이 좋습니다.
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");
'는 부작용없는'또한 ALL 기타 사항 서보 -OFF 같은 새로운 오브젝트를 생성하지 포함되는 것이다 (R => 새로운 SomeObject의() {식 r.id 이름 = r.name}) 동일한 방법으로 ? – zsharp
@zsharp : 기존 개체에는 영향을주지 않으므로 괜찮습니다. –