public static ObservableCollection<Person> ByName(ObservableCollection<Person> oldCollection) { // 按名字顺序排好的集合 ObservableCollection<Person> sortedCollection = new ObservableCollection<Person>(); // 未排序的名字的第一个字 List<string> unsortedName = oldCollection.Select(p => p.PeopleName.Substring(0, 1)).ToList(); // 李,刘,朱 Array sortedNameArray = unsortedName.ToArray(); // 排好序的名字的第一个字 Array.Sort(sortedNameArray); // 李,刘,朱 List<string> sortedName = (from object name in sortedNameArray select name.ToString()).ToList(); foreach (var firstName in sortedName) { foreach (var p in oldCollection) { if (p.PeopleName.Substring(0, 1) == firstName) { sortedCollection.Add(p); } } } return sortedCollection; }