2012-05-10 4 views
8

이것은 매우 간단한 질문이지만 "모두"는 Google LOL과 같은 나쁜 키워드입니다.LINQ : 요소가 없으면 All()은 무엇을 반환합니까?

제품을 전혀 업데이트하지 않았거나 제품이없는 모든 범주를 얻고 싶습니다.

즉, 제품이 아직없는 모든 카테고리를 포함하여 모든 제품이 아직 업데이트되지 않은 모든 카테고리를 가져옵니다.

올바른 표현인가요?

var categs = context.Categories.Where(c => c.Products.All(x => !x.Updated)); 
+2

그래, 올바르게 보인다. Protip : 당신은 "linq all"을봤을 수 있습니다. 첫 번째 히트입니다 : http://msdn.microsoft.com/en-us/library/bb548541.aspx – McGarnagle

답변

13

true을 반환합니다. documentation (강조 광산)에서 :

반환 값
소스 시퀀스의 모든 요소가 지정된 조건, 에서 테스트를 통과하거나하는 경우는 true, 시퀀스가 ​​비어 있으면; 그렇지 않으면 false입니다.

(이것은 논리적 인 결론은 너무. 시퀀스의 모든 요소 실제로 내 딸의 모든는 10 피트 정도의 키에있는 것과 같은 방식으로, 술어를 통과 않습니다. 사실 그 I 모든 딸이 없어 진술의 진실을 변경하지 마십시오 :)

그들이 작동하는 방법에 대한 자세한 내용은 내 Edulinq blog post on Any and All을 참조하십시오.

+0

논리적으로 볼 때 굵게 표시된 텍스트는 중복됩니다. 시퀀스가 비어 있으면 시퀀스의 모든 요소가 테스트를 충족시킵니다. 그러나이 질문에서 알 수 있듯이 모든 사람이 그렇게 생각하지는 않습니다. – hvd

+0

@hvd : 네, 정말로. 나는 논리적 인 이유 때문에 그것이 사실로 돌아 갔다고 대답 할 것이지만, 문서가 명시 적으로 언급 했으므로 나는 그걸 생각할 것입니다. –

+0

하하, 실제로 말이 되네요! 나는 하루 종일 코딩을위한 두뇌 잼을 가지고있다. 감사합니다 존! – Aximili

4

모두 "시퀀스의 모든 요소가 조건을 만족하는지 확인합니다."

MSDN

나는 당신의 표현이 업데이트되지 않는 제품을 포함하는 모든 범주를 얻을 correct.You라고 생각합니다.

관련 문제