25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Глава 22. Ламбда изрази и LINQ заявки 929<br />

колекциите по подобие на SQL езиците, които обработват редовете в<br />

таблици в база данни. Той е част от C# и VisualBasic синтаксиса и се състои<br />

от няколко основни ключови думи. За да използваме LINQ заявки в езика<br />

C#, трябва да включим референция към System.Core.dll и да добавим<br />

namespace-a System.Linq.<br />

Избор на източник на данни с LINQ<br />

С ключовите думи from и in се задават източникът на данни (колекция,<br />

масив и т.н.) и променливата, с която ще се итерира (обхожда) по<br />

колекцията (обхождане по подобие на foreach оператора). Например<br />

заявка, която започва така:<br />

from culture<br />

in CultureInfo.GetCultures(CultureTypes.AllCultures)<br />

може да се прочете като: За всяка една стойност от колекцията<br />

CultureInfo.GetCultures(CultureTypes.AllCultures) задай име culture, и го<br />

използвай по-нататък в заявката…<br />

Филтриране на данните с LINQ<br />

С ключовата дума where се задават условията, които всеки от елементите<br />

от колекцията трябва да изпълнява, за да продължи да се изпълнява<br />

заявката за него. Изразът след where винаги е булев израз. Може да се<br />

каже, че с where се филтрират елементите. Например, ако искаме в предния<br />

пример да кажем, че ни трябват само тези от културите, чието име започва<br />

с малка латинска буква b, можем да продължим заявката с:<br />

where culture.Name.StartsWith("b")<br />

Както може да се забележи, след from…in конструкцията използваме само<br />

името, което сме задали за обхождане на всяка една променлива от<br />

колекцията. Ключовата дума where се компилира до извикване на extension<br />

метода Where().<br />

Избор на резултат от LINQ заявката<br />

С ключовата дума select се задават какви данни да се върнат от заявката.<br />

Резултатът от заявката е под формата на обект от съществуващ клас<br />

или анонимен тип. Върнатият резултат може да бъде и свойство на<br />

обектите, които заявката обхожда или самите обекти. Операторът select и<br />

всичко след него седи винаги в края на заявката. Ключовите думи from, in,<br />

where и select са достатъчни за създаването на проста LINQ заявка. Ето и<br />

пример:<br />

List numbers = new List() {

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!