Windows Forms GroupBox에 포함 된 특정 레이블에 속성을 설정하려고 시도하면서 아래 루프를 작성했습니다. 이것은 잘 작동하지만, 나는 그것 (나는 불필요한) 이중 foreach 중첩 때문에 그것을 좋아하지 않아.중첩 된 foreach를 하나의 linq 쿼리로 대체하는 방법은 무엇입니까?
하나의 foreach와 결합 된 Linq 표현식을 사용하여 더 명확하게 다시 작성하려고 시도했지만 모든 런타임 오류가 GroupException에서 CastBox로 또는 그 반대로 CastException과 함께 런타임에 실패합니다.
이 루프 구문을 작성하는 데 더 명확하고, 효율적이며, 더 읽기 쉬운 방법이 있습니까?
foreach (var gb in (from Control c in this.Controls where c is GroupBox select c)) foreach (Label tlbl in (from Control a in gb.Controls where a is Label && a.Tag != null && a.Tag.ToString() == "answer" select a)) tlbl.ForeColor = (tlbl.Name.Replace("lbl", "") == rb.Name) ? afterSelectColor : beforeSelectColor;
는 가독성 내 최고의 목표입니다. 이를 염두에두고 다시 쓰려고 할 가치가 있습니까?
@Servy 방금 배웠습니다. 감사! –
@Servy도 완료되었습니다. –
좋은 답변입니다. 그러나 나는 이것을 가장 잘 읽고, 에릭 리 퍼트 (Eric Lippert)가 권고하는 부작용이 없다는 것을 알았다. 감사! – shipr