Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 421; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.