2014-04-11 4 views
0

에 따라 필드 값을 변경하는 쿼리 내가 가지고있는 follwing을 목적C#을 LINQ 목록

objItem (id,name,qty) - list<items> 
objSel(selId)  - list<int> 

objSel.selId이 objItem의 선택된 항목 ID입니다.

항목을 선택하지 않고 항목 qty를 0으로 변경하고 objItem을 반환하는 LINQ 쿼리를 작성하는 방법.

+0

답변을 작성했지만 원하는 답변이 아닌 경우 질문을 자세히 설명해주세요. 이상적으로는 의사 코드가 아닌 실제 코드를 표시하십시오. –

+0

Jon, 필자는 LINQ를 사용하여 필드 값을 필터링하고 변경할 수 있다고 생각했습니다. 이것이 최선의 방법이라면, 이것으로 갈 것입니다. 감사. – Wilz

답변

1

귀하의 의사 코드는 매우 혼란,하지만 난 당신이 뭔가 할 생각 : 더 효율적 들어

List<Item> items = ...; 
List<int> selectedIds = ...; 

foreach (var item in items.Where(x => !selectedIds.Contains(x.Id))) 
{ 
    item.Quantity = 0; // Property name adjusted for readability and convention 
} 

을 대신 선택한 ID에 대한 HashSet<int>를 사용합니다.

변경을 수행하는 것은 LINQ 쿼리이 아니며, 쿼리는 변경이 필요한 항목 만 제공한다는 점에 유의하십시오. LINQ를 사용하여 데이터를 변경하는 동안 그렇게하는 것은 좋지 않습니다. 단서는 "검색어"라는 단어에 있습니다. 질문하는 것입니다. 그 질문에 대한 대답으로 당신이하는 일은 다른 문제입니다.

+0

Jon, 필자는 LINQ를 사용하여 필드 값을 필터링하고 변경할 수 있다고 생각했습니다. 이것이 최선의 방법이라면, 이것으로 갈 것입니다. 감사. – Wilz

+1

@Wilz : 당신은 * 할 수 있습니다. 그러나 그것은 그것이 설계된 것이 아닙니다. 기본적으로 LINQ와 싸워야합니다. 이제 기존 객체를 변경하지 않고 기존 객체와 일부 조건을 기반으로 새 객체를 만드는 등 재 설계해야한다면 다른 문제입니다. –