Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 262
- Предыдущая
- 262/642
- Следующая
При вызове метода
OfТуре<Т>()ArrayListIEnumerable<T>Взгляните на показанный ниже новый метод, который заполняет
ArrayListCarSystem.CollectionsProgram.csstatic void LINQOverArrayList(){ Console.WriteLine("***** LINQ over ArrayList *****"); // Необобщенная коллекция объектов Car. ArrayList myCars = new ArrayList() { new Car{ PetName = "Henry", Color = "Silver", Speed = 100, Make = "BMW"}, new Car{ PetName = "Daisy", Color = "Tan", Speed = 90, Make = "BMW"}, new Car{ PetName = "Mary", Color = "Black", Speed = 55, Make = "VW"}, new Car{ PetName = "Clunker", Color = "Rust", Speed = 5, Make = "Yugo"}, new Car{ PetName = "Melvin", Color = "White", Speed = 43, Make = "Ford"} }; // Трансформировать ArrayList в тип, совместимый c IEnumerable<T>. var myCarsEnum = myCars.OfType<Car>(); // Создать выражение запроса, нацеленное на совместимый с IEnumerable<T> тип. var fastCars = from c in myCarsEnum where c.Speed > 55 select c; foreach (var car in fastCars) { Console.WriteLine("{0} is going too fast!", car.PetName); }}Аналогично предшествующим примерам этот метод, вызванный в операторах верхнего уровня, отобразит только имена
HenryDaisyФильтрация данных с использованием метода OfТуре<Т>()
Как вы уже знаете, необобщенные типы способны содержать любые комбинации элементов, поскольку члены этих контейнеров (вроде
ArrayListSystem.ObjectArrayListOfТуре<Т>()static void OfTypeAsFilter(){ // Извлечь из ArrayList целочисленные значения. ArrayList myStuff = new ArrayList(); myStuff.AddRange(new object[] { 10, 400, 8, false, new Car(), "string data" }); var myInts = myStuff.OfType<int>(); // Выводит 10, 400 и 8. foreach (int i in myInts) { Console.WriteLine("Int value: {0}", i); }}К настоящему моменту вы уже умеете применять запросы LINQ к массивам, а также обобщенным и необобщенным коллекциям. Контейнеры подобного рода содержат элементарные типы C# (целочисленные и строковые данные) и специальные классы. Следующей задачей будет изучение многочисленных дополнительных операций LINQ, которые могут использоваться для построения более сложных и полезных запросов.
Исследование операций запросов LINQ
В языке C# предопределено порядочное число операций запросов. Некоторые часто применяемые из них перечислены в табл. 13.2. В дополнение к неполному списку операций, приведенному в табл. 13.3, класс
System.Linq.EnumerableReverse<>()ToArray<>()ToList<>()Distinct<>()Union<>()Intersect<>()Count<>()Sum<>()Min<>()Мах<>()
Чтобы приступить к исследованию более замысловатых запросов LINQ, создайте новый проект консольного приложения по имени
FunWithLinqExpressionsFunWithLinqExpressionsProductInfonamespace FunWithLinqExpressions{ class ProductInfo { public string Name {get; set;} = "";- Предыдущая
- 262/642
- Следующая
