private void Refresh() { var dat = new List <RecordGroup>(); RecordGroup g = null; foreach (Note note in Persister .Where(d => IsShowAll || d.IsDeleted == false) .OrderBy(d => $"{d.CaptionRubi1}--{d.CaptionRubi}") ) { if (g == null) { dat.Add(g = new RecordGroup { Rubi1 = note.CaptionRubi1, }); } else { if (note.CaptionRubi1 != g.Rubi1) { dat.Add(g = new RecordGroup { Rubi1 = note.CaptionRubi1, }); } } g.Add(note); } listView.ItemsSource = dat; }