Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 265
- Предыдущая
- 265/642
- Следующая
static void GetNamesAndDescriptionsTyped( ProductInfo[] products){ Console.WriteLine("Names and Descriptions:"); IEnumerable<ProductInfoSmall> nameDesc = from p in products select new ProductInfoSmall { Name=p.Name, Description=p.Description }; foreach (ProductInfoSmall item in nameDesc) { Console.WriteLine(item.ToString()); }}При проецировании LINQ у вас есть выбор, какой метод использовать (в анонимные или в строго типизированные объекты). Решение, которое вы примете, полностью зависит от имеющихся бизнес-требований.
Подсчет количества с использованием класса Enumerable
Во время проецирования новых пакетов данных у вас может возникнуть необходимость выяснить количество элементов, возвращаемых внутри последовательности. Для определения числа элементов, которые возвращаются из выражения запроса LINQ, можно применять расширяющий метод
Count()Enumerablestringstatic void GetCountFromQuery(){ string[] currentVideoGames = {"Morrowind", "Uncharted 2", "Fallout 3", "Daxter", "System Shock 2"}; // Получить количество элементов из запроса. int numb = (from g in currentVideoGames where g.Length > 6 select g).Count(); // Вывести количество элементов. Console.WriteLine("{0} items honor the LINQ query.", numb);}Изменение порядка следования элементов в результирующих наборах на противоположный
Изменить порядок следования элементов в результирующем наборе на противоположный довольно легко с помощью расширяющего метода
Reverse<T>()EnumerableProductInfo[]static void ReverseEverything(ProductInfo[] products){ Console.WriteLine("Product in reverse:"); var allProducts = from p in products select p; foreach (var prod in allProducts.Reverse()) { Console.WriteLine(prod.ToString()); }}Выражения сортировки
В начальных примерах настоящей главы вы видели, что в выражении запроса может использоваться операция
orderbydescendingstatic void AlphabetizeProductNames(ProductInfo[] products){ // Получить названия товаров в алфавитном порядке. var subset = from p in products orderby p.Name select p; Console.WriteLine("Ordered by Name:"); foreach (var p in subset) { Console.WriteLine(p.ToString()); }}Хотя порядок по возрастанию является стандартным, свои намерения можно прояснить, явно указав операцию
ascendingvar subset = from p in products orderby p.Name ascending select p;Для получения элементов в порядке убывания служит операция
descendingvar subset = from p in products orderby p.Name descending select p;LINQ как лучшее средство построения диаграмм Венна
Класс
EnumerableExcept()Yugostatic void DisplayDiff(){ List<string> myCars = new List<String> {"Yugo", "Aztec", "BMW"}; List<string> yourCars = new List<String>{"BMW", "Saab", "Aztec" }; var carDiff = (from c in myCars select c)- Предыдущая
- 265/642
- Следующая
