2014-10-20 3 views
0

설정 속성 값은

I 인덱스로이 목록의 값을 사용하여 UltraGridRows의 설정 숨겨진 속성을 수행 할
Dim hiddens As List(Of Integer)) 

를 갖는 연산 식 모두, 그러나 대응하는 행은 숨겨지지 않습니다. 이것은 표현식에서 속성을 설정하는 유효한 방법입니까?

+2

LINQ로 _set_ 속성을 사용하지 마십시오. 무언가를 수정하려면 루프를 사용하십시오. 검색어를 원하면 LIN (Q)을 사용하십시오. –

+0

@TimSchmelter, 내가 왜 안되는지 알아. 이것에 대한 의견? –

+1

LINQ에는 부작용이 없어야하기 때문에. [Erip Lippert] (http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx) : "표현식의 목적은 가치를 계산하는 것이지, 성명서의 목적은 부작용을 일으키는 것 "이라고 말했다. –

답변

2

는 LINQ와 속성을 설정하지 마십시오. 무언가를 수정하려면 루프를 사용하십시오. 검색어를 원하면 LIN (Q)을 사용하십시오.

For Each index As Int32 In hiddens 
    ultraGrid1.Rows(index).Hidden = True 
Next 

또는 사용 List.ForEach :

hiddens.ForEach(Function(index) ultraGrid1.Rows(index).Hidden = True) 

Erip Lippert "표현의 목적은, 값을 계산하는 것이다이 원인이 될 수 있습니다 그래서 당신은 단순히이 For Each (내가 사용하는 것이다) 사용할 수 있습니다 성명서의 목적은 부작용을 일으키는 것 "이라고 말했다.

For Eeach (또는 암시 적으로 ToList과 같은 다른 방법)을 사용할 때까지는 쿼리가 실행되지 않습니다. 그것은 단지 쿼리의 정의입니다.

0

이 시도 :

hiddens.ForEach(Function(x) ultraGrid1.Rows(x).Hidden = True) 
+0

속성을 설정할 수 있도록 정말로 새로운 목록을 만들 것을 권장합니까? –

+0

아, 나는 그가 이미리스트를 가지고 있다는 것을 알아 차리지 못했다. –

+0

나에게 도움이되지 않았다 –