Microsoft TechDays Сергей Звездин
Microsoft TechDays Анонимные методы Лямбда-выражения Анонимные типы Методы расширения Частичные методы
Microsoft TechDays Анонимные методы Лямбда-выражения Анонимные типы Методы расширения Частичные методы List data = SortingHat.FilterArrayOfStrings ( baseballTeams, delegate (String teamName) { return (teamName.StartsWith("T")); } );
Microsoft TechDays Анонимные методы Лямбда-выражения Анонимные типы Методы расширения Частичные методы List data = SortingHat.FilterArrayOfStrings ( baseballTeams, s => s.StartsWith("T") );
Microsoft TechDays Анонимные методы Лямбда-выражения Анонимные типы Методы расширения Частичные методы var record = new { wins = 25, Looses = 10 };
Microsoft TechDays Анонимные методы Лямбда-выражения Анонимные типы Методы расширения Частичные методы public static class Class1 { public static void TestMethod(this Form source) { } Form1.TestMethod();
Microsoft TechDays Анонимные методы Лямбда-выражения Анонимные типы Методы расширения Частичные методы partial class MyClass { partial void Test(); public void Method1() { Test(); }
Microsoft TechDays Анонимные методы Лямбда-выражения Анонимные типы Методы расширения Частичные методы partial class MyClass { partial void Test() { // do something }
Microsoft TechDays Objects XML SQL Entities DataSet
Microsoft TechDays Объекты должны реализовывать IEnumerable Используйте Cast или OfType для использования коллекций, реализующих IEnumerable Синтаксис Язык запросов Точечный (dot notation) Отложенное исполнение запроса Запрос исполняется (материализуется) в момент обращения к данным Ошибки запроса не могут быть видны, пока запрос не исполнится
string[] cities = { Moscow, Spb, Eburg, Chelyabinsk, Samara, Izhevsk, Kazan, Novosibirsk, Vladivostok, Kaliningrad }; // expression query var query = from c in cities where c.StartsWith(S) select c; foreach (string city in query) { //.. }
string[] cities = { Moscow, Spb, Eburg, Chelyabinsk, Samara, Izhevsk, Kazan, Novosibirsk, Vladivostok, Kaliningrad }; // dot notation var query = cities.Where(c => c.StartsWith(S)); foreach (string city in query) { //.. }
Microsoft TechDays LINQ to Objects
Microsoft TechDays Поддержка XML для запросов LINQ Новая, улучшенная модель для работы с XML Создана из-за того, что XML DOM: Громоздкая Сложная Ресурсоемкая Сложная для понимания и т.д. System.Xml.Linq
Microsoft TechDays Упрощенное создание иерархий XML Конструирование XML документов Простой парсинг XML документов Нет поддержки XPath Поддержки XPath нету также в «классической» XML DOM для устройств
XDocument doc = new XDocument( new XElement(Users, new XElement(User, new XAttribute(type, user), new XElement(Name, Ivan), new XElement(Age, 20)), new XElement(User, new XAttribute(type, administrator), new XElement(Name, Oleg), new XElement(Age, 35)) );
XDocument doc = new XDocument( new XElement(Users, users.Select( u => new XElement(User, new XAttribute(type, u.UserType), new XElement(Name, u.Name), new XElement(Age, u.Age) ) ) );
Microsoft TechDays XNamespace XText XDocument XElement XAttribute XComment Методы сохранения и загрузки
Microsoft TechDays LINQ to XML
Microsoft TechDays Не поддерживается для.NET Compact Framework
Microsoft TechDays Не поддерживается для.NET Compact Framework
Microsoft TechDays Отчасти заменяет LINQ to SQL и позволяет работать с реляционными источниками AsEnumerable() – представление в виде коллекции Field ( column name ) – получение значения поля
DataTable table1 = GetTable(); var query = from t in table1.AsEnumerable() where t.Field (count) > 0 select t.Field (name); foreach (string t in query) { //.. }
Microsoft TechDays LINQ to DataSets
Microsoft TechDays Позволяет работать в рамках запроса или напрямую с таблицей Может использоваться для редактирования данных Options – Updatable, Scrollable,.. cmd.ExecuteResultSet(..)
SqlCeCommand cmd = new SqlCeCommand(); //.. var data = cmd.ExecuteResultSet(.. ); while (data.Read()) { var name = data.GetString(1); }
SqlCeCommand cmd = new SqlCeCommand(); //.. var data = from r in cmd.ExecuteResultSet(ResultSetOptions.Scrollable).OfType () select new {Name = r.GetString(1)}; foreach(var name in data) { //.. }
SqlCeCommand cmd = new SqlCeCommand(); //.. var data = cmd.ExecuteResultSet(ResultSetOptions.Scrollable).OfType ().Select(c => new { Name = c.GetString(1) }); foreach(var name in data) { //.. }
Microsoft TechDays ResultSet
Microsoft TechDays © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.