КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Сортировка коллекция
Использование LINQ для доступа к коллекции Language-integrated query (LINQ) может использоваться для доступа к коллекции. Запрос LINQ, обеспечивают фильтрацию, упорядочение и группирование возможности. Дополнительные сведения см. в разделе Приступая к работе с LINQ в Visual Basic или Приступая к работе с LINQ в C#. В следующем примере выполняется запрос LINQ к универсального List. Запрос LINQ возвращает другую коллекцию, содержащую результаты. private void ShowLINQ() { List<Element> elements = BuildList(); // LINQ Query. var subset = from theElement in elements where theElement.AtomicNumber < 22 orderby theElement.Name select theElement; foreach (Element theElement in subset) { Console.WriteLine(theElement.Name + " " + theElement.AtomicNumber); } // Output: // Calcium 20 // Potassium 19 // Scandium 21 } private List<Element> BuildList() { return new List<Element> { { new Element() { Symbol="K", Name="Potassium", AtomicNumber=19}}, { new Element() { Symbol="Ca", Name="Calcium", AtomicNumber=20}}, { new Element() { Symbol="Sc", Name="Scandium", AtomicNumber=21}}, { new Element() { Symbol="Ti", Name="Titanium", AtomicNumber=22}} }; }
public class Element { public string Symbol { get; set; } public string Name { get; set; } public int AtomicNumber { get; set; } } Следующий пример демонстрирует процедуру для сортировки коллекции. В этом примере сортирует экземпляров класса Car, которые хранятся в List<T>. Класс Car реализует интерфейс IComparable<T>, который требуется, чтобы метод CompareTo был реализован. Каждый вызов метода CompareTo делает одно сравнение, используемое для сортировки. Пользователь-записыванный код в методе CompareTo возвращает значение для каждого сравнения текущего объекта с другим объектом. Возвращаемое значение меньше нуля, если текущий объект меньше другой объект, то больше нуля, если текущий объект больше другого объекта, а также равняться нулю, если они равны. Это позволяет указать в коде условие больше, чем или равно ". В методе ListCars, оператор cars.Sort() сортирует список. Этот вызов метода SortList<T> вызывает метод CompareTo вызывается автоматически для объектов Car в List. private void ListCars() { var cars = new List<Car> { { new Car() { Name = "car1", Color = "blue", Speed = 20}}, { new Car() { Name = "car2", Color = "red", Speed = 50}}, { new Car() { Name = "car3", Color = "green", Speed = 10}}, { new Car() { Name = "car4", Color = "blue", Speed = 50}}, { new Car() { Name = "car5", Color = "blue", Speed = 30}}, { new Car() { Name = "car6", Color = "red", Speed = 60}}, { new Car() { Name = "car7", Color = "green", Speed = 50}} }; cars.Sort(); foreach (Car thisCar in cars) { Console.Write(thisCar.Color.PadRight(5) + " "); Console.Write(thisCar.Speed.ToString() + " "); Console.Write(thisCar.Name); Console.WriteLine(); } } public class Car: IComparable<Car> { public string Name { get; set; } public int Speed { get; set; } public string Color { get; set; } public int CompareTo(Car other) { int compare; compare = String.Compare(this.Color, other.Color, true); if (compare == 0) { compare = this.Speed.CompareTo(other.Speed); // Use descending order for speed. compare = -compare; } return compare; } }
Дата добавления: 2014-01-14; Просмотров: 451; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |