16.07.2014 Views

LINQ to Objects w C# 4.0 - Helion

LINQ to Objects w C# 4.0 - Helion

LINQ to Objects w C# 4.0 - Helion

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Jak zwraca elementy, kiedy wynik jest sekwencj (SelectMany) 71<br />

Console.WriteLine();<br />

Console.WriteLine("opcja 2:"); Console.WriteLine("------");<br />

// opcja 2: SelectMany zwraca dziewi cigów<br />

// (iteruje przez wynik Select)<br />

IEnumerable words2 =<br />

sentence.SelectMany(segment => segment.Split(' '));<br />

// za pomoc SelectMany mamy dostp do kadego cigu osobno<br />

foreach (var word in words2)<br />

Console.WriteLine(word);<br />

// opcja 3: identyczna jak opcja 2 powyej napisana za pomoc<br />

// skadni wyrae zapyta (kilka instrukcji from)<br />

IEnumerable words3 =<br />

from segment in sentence<br />

from word in segment.Split(' ')<br />

select word;<br />

Wyjcie 3.5.<br />

opcja 1:<br />

------<br />

Pewien<br />

szybki<br />

brzowy<br />

lis<br />

przeskakuje<br />

nad<br />

bardzo<br />

leniwym<br />

psem.<br />

opcja 2:<br />

------<br />

Pewien<br />

szybki<br />

brzowy<br />

lis<br />

przeskakuje<br />

nad<br />

bardzo<br />

leniwym<br />

psem.<br />

W jaki sposób działa me<strong>to</strong>da rozszerzenia SelectMany? Tworzy zagnieżdżoną pętlę<br />

foreach dla pierwotnego wyniku, zwracając każdy podelement za pomocą instrukcji<br />

yield return. Kod zbliżony do kodu SelectMany ma następującą postać:

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

Saved successfully!

Ooh no, something went wrong!