【LINQ】SelectMany... SelectMany...

  • 2008.11.02 Sunday
  • 12:51
Source and Project

さあ、よくわからないSelectManyです!


Enumerable.SelectMany メソッド
シーケンスの各要素を IEnumerable(T) に射影し、結果のシーケンスを 1 つのシーケンスに平坦化します。

SelectMany(TSource, TResult)(IEnumerable(TSource), Func(TSource, IEnumerable(TResult)))
シーケンスの各要素を IEnumerable(T) に射影し、結果のシーケンスを 1 つのシーケンスに平坦化します。

SelectMany(TSource, TResult)(IEnumerable(TSource), Func(TSource, Int32, IEnumerable(TResult)))
シーケンスの各要素を IEnumerable(T) に射影し、結果のシーケンスを 1 つのシーケンスに平坦化します。
各ソース要素のインデックスは、その要素の射影されたフォームで使用されます。

SelectMany(TSource, TCollection, TResult)(IEnumerable(TSource), Func(TSource, IEnumerable(TCollection)), Func(TSource, TCollection, TResult))
シーケンスの各要素を IEnumerable(T) に射影し、結果のシーケンスを 1 つのシーケンスに平坦化して、
その各要素に対して結果のセレクタ関数を呼び出します。

SelectMany(TSource, TCollection, TResult)(IEnumerable(TSource), Func(TSource, Int32, IEnumerable(TCollection)), Func(TSource, TCollection, TResult))
シーケンスの各要素を IEnumerable(T) に射影し、結果のシーケンスを 1 つのシーケンスに平坦化して、
その各要素に対して結果のセレクタ関数を呼び出します。
各ソース要素のインデックスは、その要素の中間の射影されたフォームで使用されます。

引用
http://msdn.microsoft.com/ja-jp/library/system.linq.enumerable.selectmany.aspx




平坦化してくれるんですね・・・え・・・平坦化ってなんですか!?



シーケンスの各要素を IEnumerable(T) に射影し、
結果のシーケンスを 1 つのシーケンスに平坦化します。


下記のような要素を持つシーケンスに対して
{{"A", "B", "C"}, {"D", "F"}, {"G", "H", "I", "J"}}

IEnumerable(T)に下記のようなオブジェクトを射影し
{"A", "B", "C"}
{"D", "F"}
{"G", "H", "I", "J"}

さらに各要素のシーケンスに対して、

A
B
C
D
E
F
G
H
I
J

と平坦化するって事なのかな?



コードで記述すると...

   var tuple = new [] { new[] { "A", "B", "C" }, new[] { "D", "F" }, new[] { "G", "H", "I", "J" } };
   var result = tuple.SelectMany(item => item);

   foreach (var item in result)
    Console.WriteLine(item);

こんな感じ?
実際に実行してみると...

A
B
C
D
F
G
H
I
J



公開しているサンプルコードにはどーでも良い他のサンプルもつけておきました。

Source and Project

【LINQ】Enumerable.ToList<TSource>() メソッドのサンプルコード。

  • 2008.11.02 Sunday
  • 10:47
Source and Project

下記の動物一覧の中で3文字の動物を抽出しリストに格納するというサンプル。

動物一覧 "Cat", "Dog", "Bird", "Pig"


-----------------------------------------------------------
  static void Main(string[] args)
  {
   Demo1();
   // Demo2();
  }

  private static void Demo1()
  {
   var animals = new[] { "Cat", "Dog", "Bird", "Pig" };
   IList<string> result = animals.Where(animal => animal.Length == 3).ToList();

   foreach (var item in result)
    Console.WriteLine(item);
  }

結果

Cat
Dog
Pig




ToList(IEnumerable) メソッドは IEnumerableから List を作成します。たいした事はしていないように聞こえますが、IEnumerableに格納されたクエリを強制的に評価する時に非常に役に立ちます。

ちなみに配列にしたい場合は、ToArray(TSource) というのがあります。

Source and Project

calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
<< August 2019 >>

あわせて読みたい

あわせて読みたいブログパーツ

selected entries

categories

archives

recent comment

  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    art55 (05/22)
  • 【キーボード】6年前のRealForceを復活させることはできる!?その3
    分解大好き (05/18)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/04)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    Gen (02/04)
  • 【キーボード】RealForce が壊れて帰ってきた。
    art55 (04/29)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    art55 (02/23)
  • 【.NET Framework 4.5】 IListがIReadOnlyListを継承してない理由。
    かるあ (02/22)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    art55 (01/16)
  • 【C#】Dictionaryの実装・データ構造・アルゴリズムを観察する。
    karuakun (01/16)
  • 【NetOffice】【Excel】死なないExcelプロセスをKillする。
    art55 (12/05)

recent trackback

recommend

recommend

recommend

C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION) (JUGEMレビュー »)
Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー

recommend

ろんりと集合
ろんりと集合 (JUGEMレビュー »)
中内 伸光
とてもわかりやすいです。

recommend

recommend

シャノン・ノイマン・ディジタル世界
シャノン・ノイマン・ディジタル世界 (JUGEMレビュー »)
市川 忠男
4章がリレーショナルデータベースな内容になってます。ページ数があまりありませんが、ポイントがものすごく的確にまとまっていて、感動します。

recommend

recommend

東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS
東プレ Realforce91UBK-S 静音キーボード 静電容量無接点方式 変荷重 ブラック NG01BS (JUGEMレビュー »)

テンキーレス、静音のRealForce91UBK-S。スコスコ感がたまらなく気持ちいいです。家と会社で2台持ってます。

recommend

recommend

プログラミング.NET Framework 第4版 (プログラミングシリーズ)
プログラミング.NET Framework 第4版 (プログラミングシリーズ) (JUGEMレビュー »)
Jeffrey Richter
発売予定美 2013年10月10日。.NET Frameworkとお付き合いする人のバイブルですね。

recommend

recommend

キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。

recommend

Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM