Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
<< На главную

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 259 260 261 262 263 264 265 266 267 ... 642
Перейти на страницу:

    public string Description {get; set;} = &quot;&quot;;

    public int NumberInStock {get; set;} = 0;

    public override string ToString()

      =&gt; $&quot;Name={Name}, Description={Description},

         Number in Stock={NumberInStock}&quot;;

  }

}

Теперь заполните массив объектами ProductInfo в вызывающем коде:

Console.WriteLine(&quot;***** Fun with Query Expressions *****n&quot;);

// Этот массив будет основой для тестирования...

ProductInfo[] itemsInStock = new[] {

  new ProductInfo{ Name = &quot;Mac's Coffee&quot;,

    Description = &quot;Coffee with TEETH&quot;, NumberInStock = 24},

  new ProductInfo{ Name = &quot;Milk Maid Milk&quot;,

    Description = &quot;Milk cow's love&quot;, NumberInStock = 100},

  new ProductInfo{ Name = &quot;Pure Silk Tofu&quot;,

    Description = &quot;Bland as Possible&quot;, NumberInStock = 120},

  new ProductInfo{ Name = &quot;Crunchy Pops&quot;,

    Description = &quot;Cheezy, peppery goodness&quot;, NumberInStock = 2},

  new ProductInfo{ Name = &quot;RipOff Water&quot;,

    Description = &quot;From the tap to your wallet&quot;, NumberInStock = 100},

  new ProductInfo{ Name = &quot;Classic Valpo Pizza&quot;,

    Description = &quot;Everyone loves pizza!&quot;,  NumberInStock = 73}

};

// Здесь мы будем вызывать разнообразные методы!

Console.ReadLine();

Базовый синтаксис выборки

Поскольку синтаксическая корректность выражения запроса LINQ проверяется на этапе компиляции, вы должны помнить, что порядок следования операций критически важен. В простейшем виде каждый запрос LINQ строится с использованием операций from, in и select. Вот базовый шаблон, который нужно соблюдать:

<i>var результат =</i>

<i>  from сопоставляемыйЭлемент in контейнер</i>

<i>  select сопоставляемыйЭлемент;</i>

Элемент после операции from представляет элемент, соответствующий критерию запроса LINQ; именовать его можно по своему усмотрению. Элемент после операции in представляет контейнер данных, в котором производится поиск (массив, коллекция, документ XML и т.д.).

Рассмотрим простой запрос, не делающий ничего кроме извлечения каждого элемента контейнера (по поведению похожий на SQL-оператор SELECT * в базе данных):

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

static void SelectEverything(ProductInfo[] products)

{

<b>  // Получить все!</b>

  Console.WriteLine(&quot;All product details:&quot;);

  var allProducts = from p in products select p;

  foreach (var prod in allProducts)

  {

    Console.WriteLine(prod.ToString());

  }

}

По правде говоря, это выражение запроса не особенно полезно, т.к. оно выдает подмножество, идентичное содержимому входного параметра. При желании можно извлечь только значения Name каждого товара, применив следующий синтаксис выборки:

static void ListProductNames(ProductInfo[] products)

{

  // Теперь получить только наименования товаров.

  Console.WriteLine(&quot;Only product names:&quot;);

  var names = from p in products select p.Name;

  foreach (var n in names)

   {

    Console.WriteLine(&quot;Name: {0}&quot;, n);

  }

}

Получение подмножества данных

Чтобы получить определенное подмножество из контейнера, можно использовать операцию where. Общий шаблон запроса становится таким:

<i>var результат =</i>

<i>  from элемент in контейнер</i>

<i>  where булевскоеВыражение</i>

<i> select элемент;</i>

Обратите внимание, что операция where ожидает выражение, результатом вычисления которого является булевское значение. Например, чтобы извлечь из аргумента ProductInfo[] только товарные позиции, складские запасы которых составляют более 25 единиц, можно написать следующий код:

static void GetOverstock(ProductInfo[] products)

{

  Console.WriteLine(&quot;The overstock items!&quot;);

  // Получить только товары со складским запасом более 25 единиц.

  var overstock =

    from p

    in products

    where p.NumberInStock &gt; 25

    select p;

  foreach (ProductInfo c in overstock)

1 ... 259 260 261 262 263 264 265 266 267 ... 642
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга