Скачать презентацию LINQ Language Integrated Query Мова інтегрованих запитів Скачать презентацию LINQ Language Integrated Query Мова інтегрованих запитів

10Lektsia_Linq.ppt

  • Количество слайдов: 13

LINQ Language Integrated Query Мова інтегрованих запитів LINQ Language Integrated Query Мова інтегрованих запитів

Що таке LINQ ? Ø На конференції Microsoft Professional Developers Conference (PDC) 2005, Андерс Що таке LINQ ? Ø На конференції Microsoft Professional Developers Conference (PDC) 2005, Андерс Хейзберг і його команда представила новий підхід - Мову Інтегрованих Запитів (Language Integrated Query(LINQ)), який уніфікує шлях отримання даних в. NET. Ø Комбінування об’єктно-орієнтованої і реляційної технологій у одному підході наз. Моделлю об’єктнореляційного відображення. Ø LINQ дозволяє отримувати дані з будь-яких об’єктів, що реалізують інтерфейс IEnumerable Ø З LINQ масиви, колекції, реляційні дані і ХML є однаково можливими джерелами даних.

using System. Linq; string[] greetings={ using System. Linq; string[] greetings={"hello world", "hello LINQ", "hello Apress”}; var items = from s in greetings where s. Ends. With("LINQ") select s; foreach (var item in items) Console. Write. Line(item); hello LINQ

using System. Linq using System. Data. Linq Northwind db = new Northwind(@ using System. Linq using System. Data. Linq Northwind db = new Northwind(@"Data Source=. SQLEXPRESS; Initial Catalog=Northwind; Integrated Security=SSPI; "); var custs = from c in db. Customers where c. City == "Rio de Janeiro" select c; foreach (var cust in custs) Console. Write. Line("{0}", cust. Company. Name); Hanari Carnes Que Delicia Ricardo Adocicanos

The LINQ Project C# VB Others… . NET Language Integrated Query Standard Query Operators The LINQ Project C# VB Others… . NET Language Integrated Query Standard Query Operators DLinq (ADO. NET) XLinq (System. Xml) <author/> <year/> <price/> </book> Objects SQL Data. Set XML </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="LINQ Project Ø Мови, що забезпечують природню підтримку для LINQ: C# 3. 0 і" src="https://present5.com/presentation/-42712344_326951289/image-6.jpg" alt="LINQ Project Ø Мови, що забезпечують природню підтримку для LINQ: C# 3. 0 і" /> LINQ Project Ø Мови, що забезпечують природню підтримку для LINQ: C# 3. 0 і Visual Basic 9. 0. Ø Основні частини проекту LINQ: v LINQ до об’єктів ( Objects) - API, що забезпечує методи, які представляють множину операторів стандартних запитів (standard query operators (SQO) ) для отримання даних з будь-яких типів об’єктів, які реалізують інтерфейс IEnumerable<T>. Ці запити виконуються для даних в пам’яті. v LINQ до ADO. NET розширює SQO для роботи з реляційними даними: § LINQ до SQL ( DLinq) використовується для запитів реляційних баз, таких як Microsoft SQL Server. § LINQ дo Data. Set підтримують запити через використання Data. Set і Data. Tables ADO. NET §LINQ до … v LINQ до XML (XLinq) не тільки доповнює SQO але також включає керування XML-визначною особливістю для створення XML-документів і запитів до них. </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="Нововведення мови С# 3. 0 • Лямбда-вирази • Розширення методів c => c. Name" src="https://present5.com/presentation/-42712344_326951289/image-7.jpg" alt="Нововведення мови С# 3. 0 • Лямбда-вирази • Розширення методів c => c. Name" /> Нововведення мови С# 3. 0 • Лямбда-вирази • Розширення методів c => c. Name static void Dump(this object o); • Виведення типу локальної змінної • Ініціалізація об’єктів • Анонімні типи • Вирази-запити • Дерева виразів var x = 5; new Point { x = 1, y = 2 } new { c. Name, c. Phone } from … where … select Expression<T> </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="Лямбда-вирази • Лямбда-вирази спрощують програмування делегатів і анонімних методів. Вони замінюють функції, які можна" src="https://present5.com/presentation/-42712344_326951289/image-8.jpg" alt="Лямбда-вирази • Лямбда-вирази спрощують програмування делегатів і анонімних методів. Вони замінюють функції, які можна" /> Лямбда-вирази • Лямбда-вирази спрощують програмування делегатів і анонімних методів. Вони замінюють функції, які можна передавати як аргументи в методи (напр. предикати). • Розділений комами список параметрів, за яким слідує лямбда-операція, а за нею – вираз або блок операторів. • Тип і кількість параметрів та тип return_expr повинен відповідати прототипу делегата (par 1, par 2, …, par. N) => return_expr (par 1, par 2, …, par. N) => { operator 1; operator 2; … operator. N; return (return_expr); } // Приклад лямбда-виразу для // delegate bool fun(int x, int y); (x, y) => { if(x>y) return (x); else return(y); } </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="Ініціалізація об’єктів. Ø Ініціалізація об’єктів здійснюється як і при ініціалізації масиву без виклику конструкторів" src="https://present5.com/presentation/-42712344_326951289/image-9.jpg" alt="Ініціалізація об’єктів. Ø Ініціалізація об’єктів здійснюється як і при ініціалізації масиву без виклику конструкторів" /> Ініціалізація об’єктів. Ø Ініціалізація об’єктів здійснюється як і при ініціалізації масиву без виклику конструкторів чи встановленя властивостей класу. Ø Створюючи такий об’єкт, компілятор спочатку викликає конструктор за замовчуванням для даного класу, а далі проводить ініціалізацію вказаних полів. Непроініціалізовані поля приймають значення за замовчуванням для їх типів даних //ініціалізація об’єкту типу Point p 1=new Point{ x=1, y=4}; Ø Лише для тих колекцій, що реалізують інтерфейс Сollections. Generic. ICollection<T> //ініціалізація списку з об’єктів типу Person List<Person> people = new List<Person> { new Person() { ID = 1, IDRole = 1, Last. Name = "Anderson", First. Name = "Brad"}, new Person() { ID = 2, IDRole = 2, Last. Name = "Gray", First. Name = "Tom"} }; </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="Виведення типу локальної змінної Ø Виведення типу змінної здійснюється на основі типу даних, яким" src="https://present5.com/presentation/-42712344_326951289/image-10.jpg" alt="Виведення типу локальної змінної Ø Виведення типу змінної здійснюється на основі типу даних, яким" /> Виведення типу локальної змінної Ø Виведення типу змінної здійснюється на основі типу даних, яким змінна буде проініціалізована (на етапі компіляції) Ø Тому виведення типу можливе лише при умові одночасної ініціалізації змінної var i = 5; //еквівалентно int i = 5; var s = “ring"; //еквівалентно string s = “ring"; var p; // error Ø Виведення типу змінної є особливо корисним для результатів складних запитів, оскільки це виключає необхідність визначати тип для кожного результату Ø Неявно типізована локальна змінна не може бути використана як параметр методу </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="Анонімні типи var person=new{First. Name=“Ira”, Last. Name=“Ratiz”}; Console. Write. Line(person. First. Name+” “+person. Last." src="https://present5.com/presentation/-42712344_326951289/image-11.jpg" alt="Анонімні типи var person=new{First. Name=“Ira”, Last. Name=“Ratiz”}; Console. Write. Line(person. First. Name+” “+person. Last." /> Анонімні типи var person=new{First. Name=“Ira”, Last. Name=“Ratiz”}; Console. Write. Line(person. First. Name+” “+person. Last. Name); Ø Анонімний тип не має назви і генерується компілятором на основі ініціалізації створюваного екземпляру об’єкта internal class ? ? ? { private string _first. Name; private string _last. Name; public string First. Name { get { return _first. Name; } set { first. Name = value; } } public string Last. Name { get { return _last. Name; } set { last. Name = value; } } } </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="Розширення методів Ø Розширення методів поширює існуючі. NET типи новими методами. Ø Наприклад, можна" src="https://present5.com/presentation/-42712344_326951289/image-12.jpg" alt="Розширення методів Ø Розширення методів поширює існуючі. NET типи новими методами. Ø Наприклад, можна" /> Розширення методів Ø Розширення методів поширює існуючі. NET типи новими методами. Ø Наприклад, можна поширити тип string новим методом , який замінює кожен пропуск в рядку на знак підкреслення. public static string Space. To. Underscore(this string source) {. . } Ø this, записаний перед першим параметром методу, вказує компілятору на тип, який ми хочемо розширити. Ø Метод і його клас повинні бути статичними. ØМетод Space. To. Underscore() надалі можна використовувати як і інші методи класу string. Ø При умові існування однойменного розширеного і власного методу, перевага віддається власному. Не можна розширювати властивості, події та оператори ØОператори стандартних запитів (where, select) розширюють інтерфейс IEnumerable<T> </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="static class Ex_str { public static string Space. To. Underscore(this string source) { //……………" src="https://present5.com/presentation/-42712344_326951289/image-13.jpg" alt="static class Ex_str { public static string Space. To. Underscore(this string source) { //……………" /> static class Ex_str { public static string Space. To. Underscore(this string source) { //…………… } }; class Program { static void Main(string[] args) { string ss 1 = "Like static method"; ss 1=Ex_str. Space. To. Underscore(ss 1); Console. Write. Line(ss 1); string ss 2 = "Like instance method"; ss 2=ss 2. Space. To. Underscore(); Console. Write. Line(ss 2); } } </p> </div> <div style="width: auto;" class="description columns twelve"><p><img class="imgdescription" title="" src="" alt="" /> </p> </div> </div> <div id="inputform"> <script>$("#inputform").load("https://present5.com/wp-content/plugins/report-content/inc/report-form-aj.php"); </script> </div> </p> <!--end entry-content--> </div> </article><!-- .post --> </section><!-- #content --> <div class="three columns"> <div class="widget-entry"> <div id="sidebarrelated"> <div id="text-2" class="box_small box widget widget_text"><div class="crp_related crp_related_shortcode "><div class="gallery_entry_related"><a href="https://present5.com/vvedenie-v-linq-natalie-vegerina-software-engineer-infostroy/" ><img src="https://present5.com/wp-content/uploads/my_linq-180x135.jpg" alt="Введение в LINQ Natalie Vegerina Software engineer Infostroy" title="Введение в LINQ Natalie Vegerina Software engineer Infostroy" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/vvedenie-v-linq-natalie-vegerina-software-engineer-infostroy/" class="crp_title">Введение в LINQ Natalie Vegerina Software engineer Infostroy</a></div><div class="gallery_entry_related"><a href="https://present5.com/the-world-of-the-english-language-for-the/" ><img src="https://present5.com/wp-content/uploads/eap_lecture_1_the_world_of_english_sep_2014-180x135.jpg" alt="The World of the English Language For the" title="The World of the English Language For the" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/the-world-of-the-english-language-for-the/" class="crp_title">The World of the English Language For the</a></div><div class="gallery_entry_related"><a href="https://present5.com/j-query-sp-courses-dp-ua-2/" ><img src="https://present5.com/wp-content/uploads/17-jquery_0-180x135.jpg" alt="j. Query sp. courses. dp. ua 2" title="j. Query sp. courses. dp. ua 2" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/j-query-sp-courses-dp-ua-2/" class="crp_title">j. Query sp. courses. dp. ua 2</a></div><div class="gallery_entry_related"><a href="https://present5.com/nhibernate-part-2-natalie-vegerina-software-engineer-infostroy/" ><img src="https://present5.com/wp-content/uploads/my_nhibernate_p2-180x135.jpg" alt="NHibernate. Part 2 Natalie Vegerina Software engineer Infostroy" title="NHibernate. Part 2 Natalie Vegerina Software engineer Infostroy" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/nhibernate-part-2-natalie-vegerina-software-engineer-infostroy/" class="crp_title">NHibernate. Part 2 Natalie Vegerina Software engineer Infostroy</a></div><div class="gallery_entry_related"><a href="https://present5.com/language-teaching-methods-techniques-and-principlesfled-303-contemporary/" ><img src="https://present5.com/wp-content/uploads/lessons_2-8_methods_of_flt-180x135.jpg" alt="Language Teaching Methods Techniques and Principles[FLED 303] Contemporary" title="Language Teaching Methods Techniques and Principles[FLED 303] Contemporary" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/language-teaching-methods-techniques-and-principlesfled-303-contemporary/" class="crp_title">Language Teaching Methods Techniques and Principles[FLED 303] Contemporary</a></div><div class="gallery_entry_related"><a href="https://present5.com/methods-of-teaching-english-a-brief-history/" ><img src="https://present5.com/wp-content/uploads/methods_of_teaching_english-180x135.jpg" alt="Methods of teaching English: A brief history" title="Methods of teaching English: A brief history" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/methods-of-teaching-english-a-brief-history/" class="crp_title">Methods of teaching English: A brief history</a></div><div class="gallery_entry_related"><a href="https://present5.com/prezentaciya-marya-sergeevna-lk-1-b-net/" ><img src="https://present5.com/wp-content/uploads/maryya_sergeevna_lk_1_b_net-180x135.jpg" alt="Презентация Марья Сергеевна лк 1 б Net" title="Презентация Марья Сергеевна лк 1 б Net" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/prezentaciya-marya-sergeevna-lk-1-b-net/" class="crp_title">Презентация Марья Сергеевна лк 1 б Net</a></div><div class="gallery_entry_related"><a href="https://present5.com/kurs-lekcij-korporativne-upravlinnya-zavdannyam-vikladannya-disciplini/" ><img src="https://present5.com/wp-content/uploads/korp_upr_1_0-180x135.jpg" alt="КУРС ЛЕКЦІЙ КОРПОРАТИВНЕ УПРАВЛІННЯ ЗАВДАННЯМ ВИКЛАДАННЯ ДИСЦИПЛІНИ" title="КУРС ЛЕКЦІЙ КОРПОРАТИВНЕ УПРАВЛІННЯ ЗАВДАННЯМ ВИКЛАДАННЯ ДИСЦИПЛІНИ" width="180" height="135" class="crp_thumb crp_featured" /></a><a href="https://present5.com/kurs-lekcij-korporativne-upravlinnya-zavdannyam-vikladannya-disciplini/" class="crp_title">КУРС ЛЕКЦІЙ КОРПОРАТИВНЕ УПРАВЛІННЯ ЗАВДАННЯМ ВИКЛАДАННЯ ДИСЦИПЛІНИ</a></div><div class="crp_clear"></div></div></div></div> </div> </div> </div> </div> <!-- #content-wrapper --> <footer id="footer"> <div class="container"> <div class="columns twelve"> <!--noindex--> <!--LiveInternet counter--><script type="text/javascript"><!-- document.write("<img src='//counter.yadro.ru/hit?t26.10;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";"+Math.random()+ "' alt='' title='"+" ' "+ "border='0' width='1' height='1'><\/a>") //--></script><!--/LiveInternet--> <script> $(window).load(function() { var owl = document.getElementsByClassName('owl-carousel owl-theme owl-loaded owl-drag')[0]; document.getElementById("owlheader").insertBefore(owl, null); $('#owlheader').css('display', 'inline-block'); }); </script> <script type="text/javascript"> var yaParams = {'typepage': 'parserexe3', 'author': 'parserexe3' }; </script> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter32395810 = new Ya.Metrika({ id:32395810, clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, params: yaParams }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/watch.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks"); </script> <noscript><div><img src="https://mc.yandex.ru/watch/32395810" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <!--/noindex--> <nav id="top-nav"> <ul id="menu-top" class="top-menu clearfix"> </ul> </nav> </div> </div><!--.container--> </footer> <script type='text/javascript'> /* <![CDATA[ */ var wpcf7 = {"apiSettings":{"root":"https:\/\/present5.com\/wp-json\/contact-form-7\/v1","namespace":"contact-form-7\/v1"}}; /* ]]> */ </script> <script type='text/javascript' src='https://present5.com/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=5.1.4'></script> <script type='text/javascript' src='https://present5.com/wp-content/themes/sampression-lite/lib/js/jquery.shuffle.js?ver=4.9.16'></script> <script type='text/javascript' src='https://present5.com/wp-content/themes/sampression-lite/lib/js/scripts.js?ver=1.1'></script> <script type='text/javascript' src='https://present5.com/wp-content/themes/sampression-lite/lib/js/shuffle.js?ver=4.9.16'></script> <!--[if lt IE 9]> <script type='text/javascript' src='https://present5.com/wp-content/themes/sampression-lite/lib/js/selectivizr.js?ver=1.0.2'></script> <![endif]--> </body> </html>