Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 263
- Предыдущая
- 263/642
- Следующая
public string Description {get; set;} = ""; public int NumberInStock {get; set;} = 0; public override string ToString() => $"Name={Name}, Description={Description}, Number in Stock={NumberInStock}"; }}Теперь заполните массив объектами
ProductInfoConsole.WriteLine("***** Fun with Query Expressions *****\n");// Этот массив будет основой для тестирования...ProductInfo[] itemsInStock = new[] { new ProductInfo{ Name = "Mac's Coffee", Description = "Coffee with TEETH", NumberInStock = 24}, new ProductInfo{ Name = "Milk Maid Milk", Description = "Milk cow's love", NumberInStock = 100}, new ProductInfo{ Name = "Pure Silk Tofu", Description = "Bland as Possible", NumberInStock = 120}, new ProductInfo{ Name = "Crunchy Pops", Description = "Cheezy, peppery goodness", NumberInStock = 2}, new ProductInfo{ Name = "RipOff Water", Description = "From the tap to your wallet", NumberInStock = 100}, new ProductInfo{ Name = "Classic Valpo Pizza", Description = "Everyone loves pizza!", NumberInStock = 73}};// Здесь мы будем вызывать разнообразные методы!Console.ReadLine();Базовый синтаксис выборки
Поскольку синтаксическая корректность выражения запроса LINQ проверяется на этапе компиляции, вы должны помнить, что порядок следования операций критически важен. В простейшем виде каждый запрос LINQ строится с использованием операций
frominselect<i>var результат =</i><i> from сопоставляемыйЭлемент in контейнер</i><i> select сопоставляемыйЭлемент;</i>Элемент после операции
fromРассмотрим простой запрос, не делающий ничего кроме извлечения каждого элемента контейнера (по поведению похожий на SQL-оператор
SELECT *static void SelectEverything(ProductInfo[] products){<b> // Получить все!</b> Console.WriteLine("All product details:"); var allProducts = from p in products select p; foreach (var prod in allProducts) { Console.WriteLine(prod.ToString()); }}По правде говоря, это выражение запроса не особенно полезно, т.к. оно выдает подмножество, идентичное содержимому входного параметра. При желании можно извлечь только значения
Namestatic void ListProductNames(ProductInfo[] products){ // Теперь получить только наименования товаров. Console.WriteLine("Only product names:"); var names = from p in products select p.Name; foreach (var n in names) { Console.WriteLine("Name: {0}", n); }}Получение подмножества данных
Чтобы получить определенное подмножество из контейнера, можно использовать операцию
where<i>var результат =</i><i> from элемент in контейнер</i><i> where булевскоеВыражение</i><i> select элемент;</i>Обратите внимание, что операция where ожидает выражение, результатом вычисления которого является булевское значение. Например, чтобы извлечь из аргумента
ProductInfo[]static void GetOverstock(ProductInfo[] products){ Console.WriteLine("The overstock items!"); // Получить только товары со складским запасом более 25 единиц. var overstock = from p in products where p.NumberInStock > 25 select p; foreach (ProductInfo c in overstock)- Предыдущая
- 263/642
- Следующая
