NavigationTitle, NavigationUrl 및 IsCurrent 속성이있는 경량 클래스 인 Breadcrumb 유형의 IList가 있습니다. 그것은 웹 서버에 캐시됩니다. 나는 아래의 코드를 사용하여 IsCurrent가 true로 설정된 첫 번째 빵 부스러기까지 현재 빵 부스러기 흔적을 만드는 방법을 사용합니다. 그것의 아주 못생긴과 확실히 빠른 진흙 투성이의 의지 솔루션,하지만 난 궁금해서, 쉽게 LINQ로 refactored 수 있습니까?멋진 LINQ로 리팩토링 할 수 있습니까?
IList<Breadcrumb> crumbs = new List<Breadcrumb>();
bool foundCurrent = false;
for (int a = 0; a < cachedCrumbs.Count; a++)
{
crumbs.Add(crumbs[a]);
if (foundCurrent)
{
break;
}
foundCurrent = (crumbs[a + 1] != null && ((Breadcrumb)crumbs[a + 1]).IsCurrent);
}
안녕 존,이 일했습니다! 고맙습니다. 나는 선택이 무엇을하는지 이해하지만, 나는 조금 잃어버린 .TakeWhile (빵 부스러기 => foundCurrent) - 정확하게 그 일을 무엇입니까? 그리고 select에서 selectedCurrent가 다시 나타나는 이유는 무엇입니까? – EvilSyn
TakeWhile은 실제로 잘못되었습니다 - "foundCurrent"보다는 "! foundCurrent"여야합니다 - 해결했습니다. TakeWhile 람다는 단지 "우리가 현재를 찾지 못한 채 계속"입니다. 선택 람다는 기본적으로 TakeWhile 뒤에 * foundCurrent *를 설정합니다. –