public void Browse(StreamCollection<ValueType> Parent) { if (Parent.Length != this.Keys.Length) throw new Exception("miss match Len"); if (GapsByFrom.Where((c) => GapsByLen.BinarySearch(new DataByLen() { Data = c.Data }).Index < 0). Count()>0) throw new Exception(); var Datas = new List<(string Role, Data Data)>( GapsByFrom.Select((c) => ("isGap", c.Data))); foreach (var Key in this.Keys) Datas.Add(("key", Key)); var Keys = Datas.OrderBy((c) => c.Data.From).ToArray(); for (int i = 0; i < Keys.Length; i++) { Browse(i, Keys); } }