2011-02-16 8 views
0

LINQ를 학습하면서 다음과 같은 문제가 발생했습니다.LINQ를 사용하는 확인란 유효성 검사

N 개의 체크 박스와 버튼이있는 윈도우 폼. 사용자가 두 개의 확인란을 모두 \ 선택하면 버튼이 활성화되어 있어야합니다. LINQ를 사용하여 구현하려고하지만 원하는 결과를 얻을 수 없습니다.

다음 코드를 사용했지만 확인란 중 하나가 선택된 경우에만 작동합니다.

btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Any(b => b.Checked); 

답변

2

btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Count(b => b.Checked) >= 2;

트릭을 할해야!

btnAgree.Enabled = (from chkbox in Controls.OfType<CheckBox>() select chkbox).Count(b => b.Checked) >= 2; 
+0

대단히 감사합니다. – AbrahamJP

+0

@AbrahamJP : 환영합니다! – Nauman

1

이 시도 :

btnAgree.Enabled = ((from chkbox in Controls.OfType<CheckBox>() select chkbox where chkbox.Checked = true).Count >= 2) 
+0

을,'where' select''앞에 와야한다, 어쨌든'Controls.OfType 는()'충분하다 -이 모든 'from'구문이 필요 없습니다. –

+0

죄송합니다. 저는 방금 방향을 제시하려고 VB 지향적이었습니다 ... – ReFocus

+0

where 절을 수정 한 후 코드를 사용했을 때, LINQ를 통해 true로 설정된 속성을 설정하는 새로운 방법을 배우게되었습니다. 고마워. :) – AbrahamJP

0

카운트 체크 체크 박스의 수를 반환 할 수 있습니까? 이 트릭해야 그렇다면

: 내가 아는 한

btnAgree.Enabled = Controls.OfType<CheckBox>() 
          .Count(b => b.Checked) == 2; 
0

당신이 Linq에식이 경우 true를 반환 하시겠습니까 만 정확히하면 2 체크 박스가 선택 :

관련 문제