나는 NodaTime.IsoDayOfWeek
일의 목록을 취하는 함수를 만들기 위해 C#을 사용하고 있습니다. 나는 입력을 연속 일 그룹으로 묶고 싶다. 목록이 폐쇄 루프 그래서, 일요일, 월요일 연속 것을요일 목록을 연속 일 그룹으로 그룹화
{ Mon, Tue } => { { Mon, Tue } }
{ Mon, Wed } => { { Mon }, { Wed } }
{ Mon, Tue, Fri, Sat } => { { Mon, Tue }, { Fri, Sat } }
{ Mon, Wed, Fri, Sun } => { { Sun, Mon }, { Wed }, { Fri } }
{ Mon, Tue, Wed, Thu, Fri, Sat, Sun } => { { Mon, Tue, Wed, Thu, Fri, Sat, Sun } }
주의 사항 :
는 예를 들어, 다음 목록은 다음과 같은 출력을 제공해야합니다. 또한 결과 목록은 첫 번째 날이 입력 목록에 포함되지 않은 날 (즉 전체 목록이 포함 된 경우 월요일)을 직접 따르도록 주문해야합니다.
public static IEnumerable<IEnumerable<int>> GroupConsecutive(this IEnumerable<int> list) {
var group = new List<int>();
foreach (var i in list) {
if (group.Count == 0 || i - group[group.Count - 1] <= 1)
group.Add(i);
else {
yield return group;
group = new List<int> {i};
}
}
yield return group;
}
Mauricio Scheffer published a great extension method to group consecutive integers here:
그러나 나는 일요일과 월요일도 연속이기 때문에 그룹 일이를 수정하는 방법을 알아낼 수 없습니다. 일요일과 월요일도 연속 된 것으로 간주되는 연속 일을 어떻게 그룹화 할 수 있습니까?
[이 확인] (http://stackoverflow.com/questions/4681949/use-linq-to-group-a-sequence-of-numbers-with-no-gaps) - 사랑 DTB의 대답 - 자신의 필요에 어떻게 적응할 수 있는지 알아보십시오. –