61) new { имя А = значение А, имя В = значение В,... } new { Count = 10, Max = 100, Min = 0 } 62) var myOb = new { Count = 10, Max = 100, Min = 0 } 63)

Презентация:



Advertisements
Похожие презентации
ИТЕРАТОРЫ И LINQ Лекция 1. Интерфейс IEnumerable и IEnumerator Любая коллекция реализует интерфейс IEnumerable. public interface IEnumerable : IEnumerable.
Advertisements

ДЕЛЕГАТЫ Лекция 7 1. Зачем нужны делегаты 2 И данные, и код располагаются в памяти компьютера по определенным адресам. Передача адресов данных в C# происходит.
Высокоуровневые методы информатики и программирования Лекция 9 Делегаты.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Гайдар Магдануров Microsoft.
Гайдар Магдануров Microsoft.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Делегаты Как созданные объекты могут посылать сообщения тем объектам, которые их породили? При программировании под Windows на С и C++ основное средство.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
В С# предусмотрены средства для создания пользовательских классов-контейнеров, к внутренним элементам которых можно обращаться при помощи того же оператора.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
b5_java_s4
Транксрипт:

61) new { имя_А = значение_А, имя_В = значение_В,... } new { Count = 10, Max = 100, Min = 0 } 62) var myOb = new { Count = 10, Max = 100, Min = 0 } 63) Console.WriteLine("Счет равен " + myOb.Count); if(i = myOb.Min) //... 64) Листинг 9.16 // Использовать анонимный тип для усовершенствования // программы, демонстрирующей применение оператора join. using System; using System.Linq;

// Класс, связывающий наименование товара с его порядковым номером. class Item { public string Name { get; set; } public int ItemNumber { get; set; } public Item(string n, int inum) { Name = n; ItemNumber = inum; } // Класс, связывающий наименование товара с состоянием // его запасов на складе. class InStockStatus { public int ItemNumber { get; set; } public bool InStock { get; set; }

public InStockStatus(int n, bool b) { ItemNumber = n; InStock = b; } class AnonTypeDemo { static void Main() { Item[] items = { new Item("Кусачки", 1424), new Item("Тиски", 7892), new Item("Молоток", 8534), new Item("Пила", 6411) }; InStockStatus[] statusList = { new InStockStatus(1424, true), new InStockStatus(7892, false), new InStockStatus(8534, true), new InStockStatus(6411, true) };

// Сформировать запрос, объединяющий объекты классов Item // и InStockStatus для составления списка наименований // товаров и их наличия на складе. Теперь для этой цели // используется анонимный тип. var inStockList = from item in items join entry in statusList on item.ItemNumber equals entry.ItemNumber select new { Name = item.Name, InStock = entry.InStock }; Console.WriteLine("Товар\t Наличие\n"); // Выполнить запрос и вывести его результаты. foreach(var t in inStockList) Console.WriteLine("{0}\t{1}", t.Name, t.InStock); }

65) select new { Name = item.Name, InStock = entry.InStock }; 66) select new { item.Name, entry.InStock }; 67) Листинг 9.17 // Продемонстрировать применение простого группового объединения. using System; using System.Linq; // Этот класс связывает наименование вида транспорта, // например, поезда, с общей классификацией транспорта: // наземного, морского, воздушного или речного. class Transport { public string Name { get; set; } public string How { get; set; }

public Transport(string n, string h) { Name = n; How = h; } class GroupJoinDemo { static void Main() { // Массив классификации видов транспорта. string[] travelTypes = { "Воздушный", "Морской", "Наземный", "Речной" };

// Массив видов транспорта. Transport[] transports = { new Transport("велосипед", "Наземный"), new Transport("аэростат", "Воздушный"), new Transport("лодка", "Речной"), new Transport("самолет", "Воздушный"), new Transport("каноэ", "Речной"), new Transport("биплан", "Воздушный"), new Transport("автомашина", "Наземный"), new Transport("судно", "Морской"), new Transport("поезд", "Наземный") }; // Сформировать запрос, в котором групповое // объединение используется для составления списка // видов транспорта по соответствующим категориям. var byHow = from how in travelTypes join trans in transports on how equals trans.How into lst select new { How = how, Tlist = lst };

// Выполнить запрос и вывести его результаты. foreach(var t in byHow) { Console.WriteLine("К категории " + "относится: ", t.How); foreach(var m in t.Tlist) Console.WriteLine(" " + m.Name); Console.WriteLine(); } 68) К категории относится: аэростат самолет биплан К категории относится: Судно

К категории относится: велосипед автомашина поезд К категории относится: лодка каноэ 69) var byHow = from how in travelTypes join trans in transports on how equals trans.How into lst select new { How = how, Tlist = lst };

70) foreach(var t in byHow) { Console.WriteLine("К категории относится:", t.How); foreach(var m in t.Tlist) Console.WriteLine(" " + m.Name); Console.WriteLine() ; } Оператор запроса Эквивалентный метод запроса selectSelect(selector) whereWhere(predicate) orderby OrderBy(keySelector) или OrderByDescending(keySelector) join Join(inner, outerKeySelector, innerKeySelector, resultKeySelector) groupGroupBy(keySelector)

72) delegate TResult Func (Т arg) 73) Листинг 9.18 // Использовать методы запроса для формирования простого запроса. Это переделанный вариант // первого примера программы из данной главы. using System; using System.Linq; class SimpQuery { static void Main() { int[] nums = { 1, -2, 3, 0, -4, 5 }; // Использовать методы Where() и Select() для // формирования простого запроса.

var posNums = nums.Where(n => n > 0).Select(r => r); Console.Write( "Положительные значения из массива nums: "); // Выполнить запрос и вывести его результаты. foreach(int i in posNums) Console.Write(i + " "); Console.WriteLine(); } 74) Положительные значения из массива nums: ) var posNums = nums.Where(n => n > 0).Select(r => r); 76) var posNums = nums.Where(n => n > 0).Select (r => r * 10); 77) var posNums = nums.Where (n => n > 0).OrderByDescending(j => j);

78) Листинг 9.19 // Продемонстрировать применение метода GroupBy(). // Это переработанный вариант примера, приведенного // ранее для демонстрации синтаксиса запросов. using System; using System.Linq; class GroupByDemo { static void Main() { string[] websites = { "hsNameA.com", "hsNameB.net", "hsNameC.net", "hsNameD.com","hsNameE.org", "hsNameF.org", "hsNameG.tv", "hsNameH.net", "hsNameI.tv" };

// Использовать методы запроса для группирования // веб-сайтов по имени домена самого верхнего // уровня. var webAddrs = websites.Where(w => w.LastIndexOf('.') != 1). GroupBy(x => x.Substring(x.LastIndexOf('.'))); // Выполнить запрос и вывести его результаты. foreach(var sites in webAddrs) { Console.WriteLine("Веб-сайты, сгруппированные " + "по имени домена" + sites.Key); foreach(var site in sites) Console.WriteLine(" " + site); Console.WriteLine(); }

79) var inStockList = from item in items join entry in statusList on item.ItemNumber equals entry.ItemNumber select new Temp(item.Name, entry.InStock); 80) // Использовать метод запроса Join() для составления // списка наименований товаров и состояния // их запасов на складе. var inStockList = items.Join(statusList, k1 => kl.ItemNumber, k2 => k2.ItemNumber, (kl, k2) => new Temp(k1.Name, k2.InStock) );

81) var inStockList = items.Join(statusList, k1 => k1.ItemNumber, k2 => k2.ItemNumber, (kl, k2) => new { kl.Name, k2.InStock} ); 82) where х < 10 83) Where(х => х < 10)

Метод Описание All(predicate) Возвращает логическое значение true, если все элементы в последовательности удовлетворяют условию, задаваемому параметром predicate Any(predicate) Возвращает логическое значение true, если любой элемент в последовательности удовлетворяют условию, задаваемому параметром predicate Average() Возвращает среднее всех значений в числовой последовательности Contains(value) Возвращает логическое значение true, если в последовательности содержится указанный объект Count() Возвращает длину последовательности, т. е. количество составляющих ее элементов First() Возвращает первый элемент в последовательности Last() Возвращает последний элемент в последовательности Max() Возвращает максимальное значение в последовательности Min() Возвращает минимальное значение в последовательности Sum() Возвращает сумму значений в числовой последовательности

85) Листинг 9.20 // Использовать ряд методов расширения, определенных // в классе Enumerable. using System; using System.Linq; class ExtMethods { static void Main() { int[] nums = { 3, 1, 2, 5, 4 }; Console.WriteLine("Минимальное значение равно " + nums.Min()); Console.WriteLine("Максимальное значение равно + nums.Max()); Console.WriteLine("Первое значение равно " + nums.First());

86) Листинг 9.21 Минимальное значение равно 1 Максимальное значение равно 5 Первое значение равно 3 Последнее значение равно 4 Суммарное значение равно 15 Среднее значение равно 3 Все значения больше нуля. По крайней мере одно значение является четным Массив содержит значение 3. 87) // Использовать метод Average() вместе с синтаксисом // запросов. using System; using System.Linq; class ExtMethods2 { static void Main()

{ int[] nums = { 1, 2, 4, 8, 6, 9, 10, 3, 6, 7 }; var ltAvg = from n in nums let x = nums.Average() where n < x select n; Console.WriteLine("Среднее значение равно " + nums.Average()); Console.Write("Значения меньше среднего: "); // Выполнить запрос и вывести его результаты. foreach(int i in ltAvg) Console.Write(i + " "); Console.WriteLine(); }

88) Среднее значение равно 5.6 Значения меньше среднего: ) var ltAvg = from n in nums let x = nums.Average() where n < x select n; 90) Листинг 9.22 // Использовать режим немедленного выполнения запроса. using System; using System.Linq; class ImmediateExec { static void Main() { int[] nums = { 1, -2, 3, 0, -4, 5 };

// Сформировать запрос на получение количества // положительных значений в массиве nums. int len = (from n in nums where n > 0 select n).Count(); Console.WriteLine( "Количество положительных значений в массиве nums: " + len); } 91) Количество положительных значений в массиве nums: 3 92) var posNums = from n in nums where n > 0 select n; int len = posNums.Count(); // запрос выполняется здесь

93) int[] pnums = posNum.ToArray(); // запрос выполняется здесь foreach(int i in pnums) { Console.Write(i + " "); } 94) Листинг // Пример простого дерева выражений. using System; using System.Linq; using System.Linq.Expressions; class SimpleExpTree { static void Main() {

// Представить лямбда-выражение в виде данных. Expression > IsFactorExp = (n, d) => (d != 0) ? (n % d) == 0 : false; // Скомпилировать данные выражения в исполняемый код. Func IsFactor = IsFactorExp.Compile(); // Выполнить выражение. if(IsFactor(10, 5)) Console.WriteLine("Число 5 является множителем 10."); if(!IsFactor(10, 7)) Console.WriteLine( "Число 7 не является множителем 10."); Console.WriteLine(); }

95) Число 5 является множителем 10. Число 7 не является множителем ) Expression > IsFactorExp = (n, d) => (d != 0) ? (n % d) == 0 : false; 97) Func IsFactor = IsFactorExp.Compile(); 98) static возвращаемый_тип имя ( this тип_вызывающего_объекта ob, список_параметров)

99) Листинг 9.24 // Создать и использовать ряд методов расширения. using System; using System.Globalization; static class MyExtMeths { // Возвратить обратную величину числового // значения типа double. public static double Reciprocal(this double v) { return 1.0 / v; } // Изменить на обратный регистр букв в символьной // строке и возвратить результат.

public static string RevCase(this string str) { string temp = ""; foreach(char ch in str) { if(Char.IsLower(ch)) temp += Char.ToUpper(ch, CultureInfo.CurrentCulture); else temp += Char.ToLower(ch, CultureInfo.CurrentCulture); } return temp; } // Возвратить абсолютное значение выражения n / d. public static double AbsDivideBy(this double n, double d) { return Math.Abs(n / d); }

class ExtDemo { static void Main() { double val = 8.0; string str = "Alpha Beta Gamma"; // Вызвать метод равширения Reciprocal(). Console.WriteLine( "Обратная величина {0} равна {1}", val, val.Reciprocal()); // Вызвать метод расширения RevCase(). Console.WriteLine(str + " после сиены регистра + str.RevCase()); // Использовать метод расширения AbsDivideBy(); Console.WriteLine( "Результат вызова метода val.AbsDivideBy(-2): " + val.AbsDivideBy(-2)); }

100) Обратная величина 8 равна Alpha Beta Gamma после смены регистра: aLPHA bЕТА gАММА Результат вызова метода val.AbsDivideBy(-2): 4 101) val.AbsDivideBy(-2) 102) 8.0.Reciprocal() 8.0.AbsDivideBy(-1) 103) "AbCDe".RevCase()