C# 모음 문자열이 있습니다. 각 문자열은 페이지에 나타날 수있는 문장입니다. 또한 int의 컬렉션 인 페이지 나누기 모음이 있습니다. 문자열 컬렉션이 새 페이지로 분할되는 인덱스를 나타냅니다.LINQ 및 C#을 사용하여 하위 모음을 선택하기위한 알고리즘/패턴
예 : 페이지 나누기의 컬렉션 (10)의 값, 20, 30와 INT 년대의 수집 될 수 있도록 문자열 컬렉션에서 각 10 개 항목 2
가 그렇다면 ... 페이지입니다 문자열 페이지가 있으면 페이지 나누기 컬렉션에 1 개의 항목이 있고 1 페이지가 있으면 페이지 나누기 모음에 항목이 없을 것입니다.나는 다음과 같은 기능을 만들려고 오전 : 단일 및 두 페이지 고려해야
List<string> GetPage(List<string> docList, List<int> pageBreakList, int pageNum)
{
// This function returns a subset of docList - just the page requested
}
나는이 기능을 쓰기에 약간의 찌르기를 촬영했습니다 및 경우 복잡한 함께 올라오고 계속하고 문을 전환 문서 및 페이지 번호가 범위를 벗어나 요청됩니다 (예 : 페이지 번호가 페이지 수보다 크면 마지막 페이지가 반환되고 페이지 번호가 0보다 작 으면 첫 번째 페이지가 반환 됨).
이 문제로 인해 어려움을 겪었습니다.이 유형의 하위 집합 쿼리를 처리 할 수있는 잘 알려진 패턴이나 알고리즘이 있습니까?
왜 GetRange()가 Skip() 및 Take()보다 나은 옵션인지 자세히 설명해 주시겠습니까? –
GetRange는 List의 내부 구현을 활용합니다. Skip/Take는 IEnumerable (열거를 포함)의 계약을 사용합니다. List에 백만 개의 요소가 있으면 GetRange를 사용하여 950,000에서 950,010 사이의 요소를 더 빠르게 얻을 수 있습니다. –
"'pageBreaks.Count! = 0'" 'pageBreaks.Count == 0'을 의미합니까? 'pageBreaks.Any()'가 일반적으로 바람직합니다. 계산이 필요하지 않습니다. –