LINQ: How It Works

1,199 views

Published on

Talk for TulaDev.NET User Group

Language: Russian

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,199
On SlideShare
0
From Embeds
0
Number of Embeds
48
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

LINQ: How It Works

  1. 1. TulaDev.NET<br />LINQ: как это работает<br />Те скрытые строки кода, которые позволяют вам писать красиво и элегантно<br />Андрей Кулешов<br />Codemasters International<br />Senior C# Developer, Team Lead<br />akuleshov@codereign.net | http://www.codemastersintl.com/Blogs/Andrey-Kuleshov<br />
  2. 2. Что будет:<br />Синтаксис LINQ<br />С какими источниками данных это уже работает?<br />Как они это компилируют?<br />Как они это выполняют?<br />Как мы можем расширитьLINQ на свою систему?<br />
  3. 3. Синтаксис языка C#<br />Стандартные операторы запросов<br />Реализующий запросы фреймворк<br />
  4. 4. Как это выглядит<br />
  5. 5. Источник <br />данных<br />
  6. 6. Ссылка на сущность в источнике данных<br />Источник <br />данных<br />
  7. 7. Источник <br />данных<br />Ссылка на сущность в источнике данных<br />Фильтрация и сортировка<br />
  8. 8. Источник <br />данных<br />Ссылка на сущность в источнике данных<br />Фильтрация и сортировка<br />Преобразование <br />данных<br />
  9. 9. Как это видит компилятор<br />
  10. 10. Как это видит компилятор<br />
  11. 11. И что это за метод?<br />xs.Where(x => x.Id == 1)<br />Queryable.Where(<br />xs,<br /> x => x.Id == 1)<br />Enumerable.Where(<br />xs,<br /> x => x.Id == 1)<br />delegate(int x) {<br /> return x.Id == 1;<br />}<br />Expression.Lambda(<br />Expression.Equal(…),<br />Expression.Parameter(…)<br />)<br />
  12. 12. Queryable<br />IQueryProvider<br />SQL<br />Entities<br />NHibernate<br />…<br />Как это выполняется<br />
  13. 13. Дерево выражений<br />BinaryExpression<br />/<br />ConstantExpression<br />BinaryExpression<br />2<br />*<br />b<br />h<br />ParameterExpression<br />ParameterExpression<br />
  14. 14. Как расширить LINQCustom LINQ Extensions<br />Extension Methods for LINQ to Objects:LINQ to Xml:IEnumerable<XElement> Descendants();<br />Custom Linq To Anything providers:LINQ to TerraServer-USA Web servicehttp://msdn.microsoft.com/en-us/library/bb546158.aspx<br />
  15. 15. Вопросы?Внимательно слушаю <br />Андрей Кулешов<br />Codemasters International<br />Senior C# Developer, Team Lead<br />akuleshov@codereign.net | http://www.codemastersintl.com/Blogs/Andrey-Kuleshov<br />
  16. 16. Источники<br />Programming Microsoft LINQ. Paolo Pialorsi, Marco Russo<br />MS TechEd New Zealand session:LINQ Confidential: A Deep Dive Into How LINQ Works by Ivan Towlson http://www.msteched.com/2010/NewZealand/DEV401<br />Создание Custom LINQ Providerhttp://msdn.microsoft.com/en-us/library/bb546158.aspx<br />Андрей Кулешов<br />Codemasters International<br />akuleshov@codereign.net | http://www.codemastersintl.com/Blogs/Andrey-Kuleshov<br />

×