{"id":6827,"date":"2022-10-06T15:19:12","date_gmt":"2022-10-06T14:19:12","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=6827"},"modified":"2022-10-06T15:19:12","modified_gmt":"2022-10-06T14:19:12","slug":"c-get-number-ranges-from-list-of-numbers","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/c-get-number-ranges-from-list-of-numbers\/","title":{"rendered":"C# Get number ranges from list of numbers"},"content":{"rendered":"\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"csharp\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">using System.Collections.Generic;\r\nusing System.Linq;\r\n\r\npublic interface INumberRange\r\n{\r\n\tint Min { get; set; }\r\n\tint Max { get; set; }\r\n}\r\npublic class NumberRange : INumberRange\r\n{\r\n\tpublic int Min { get; set; }\r\n\tpublic int Max { get; set; }\r\n}\r\npublic class RangeHelper\r\n{\r\n\tpublic static INumberRange GetRange(int min, int max) => new NumberRange { Min = min, Max = max };\r\n\r\n\tpublic static IEnumerable&lt;INumberRange> FindRanges(IEnumerable&lt;int> input)\r\n\t{\r\n\t\tif (!input.Any()) yield break;\r\n\t\tvar sortedList = input.OrderBy(x => x);\r\n\t\tvar first = sortedList.FirstOrDefault();\r\n\t\tvar range = GetRange(first, first);\r\n\r\n\t\tforeach (var item in sortedList)\r\n\t\t{\r\n\t\t\tif (range.Max == item || range.Max == item - 1)\r\n\t\t\t{\r\n\t\t\t\trange.Max = item;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tvar oldRange = range;\r\n\t\t\trange = GetRange(item, item);\r\n\t\t\tyield return oldRange;\r\n\t\t}\r\n\t\tyield return range;\r\n\t}\r\n}\r\n\r\n<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6827","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=6827"}],"version-history":[{"count":1,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6827\/revisions"}],"predecessor-version":[{"id":6828,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6827\/revisions\/6828"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=6827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=6827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=6827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}