「LINQ - 拡張メソッド一覧」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
(Wiki がページ「LINQの拡張メソッド一覧」を「LINQ - 拡張メソッド一覧」に、リダイレクトを残さずに移動しました)
編集の要約なし
2行目: 2行目:
C#のLINQを種類ごとにまとめて、簡単なサンプルを記述する。<br>
C#のLINQを種類ごとにまとめて、簡単なサンプルを記述する。<br>
<br>
<br>
結果の表示に、独自の拡張メソッドToResult(this IEnumerable)を使用している。<br>
ここでは、結果の表示において、独自の拡張メソッドToResult(this IEnumerable)を使用している。<br>
このメソッドは、本文の最後に記載する。(サンプルコードのダウンロードはこちら)<br>
このメソッドを以下に記述する。<br>
<source lang="c#">
// 結果表示用の拡張メソッド
public static String ToResult<TSource>(this IEnumerable<TSource> source)
{
    return "{" + string.Join(", ", source) + "}";
}
public static String ToResult<TKey, TSource>(this IEnumerable<IGrouping<TKey, TSource>> source)
{
    return source.Select(group => string.Format("Key={0}, Source={1}", group.Key, group.ToResult())).ToResult();
}
</source>
<br><br>
<br><br>


314行目: 326行目:
| ToList ||リストを作成する。
| ToList ||リストを作成する。
|-
|-
| ToLookup || キーコレクション*1を生成する。
| ToLookup || キーコレクション*1を生成する。<br>IEnumerableと同じ名前のメソッドがクラス内に定義されている場合に使用する。<br>そのままだと、クラス内のメソッドが優先的に選択されて、<br>IEnumerableの拡張メソッドが呼びだせないためである。
|-
|-
| AsEnumerable || IEnumerableを返す。*2
| AsEnumerable || IEnumerableを返す。<br>1対多のディクショナリである。<br>例えば、〜.ToLookup()["hoge"]と実行すると、hogeに紐付く要素の集合(IEnumerable)が返る。
|}
|}
</center>
</center>
'''*1 : 1対多のディクショナリ。例えば、~.ToLookup()["hoge"]と実行すると、"hoge"に紐付く要素の集合(IEnumerable)が返る。'''<br>
<br>
'''*2 : IEnumerableと同じ名前のメソッドがクラス内に定義されている場合に使う。'''<br>
      '''そのままだと、クラス内のメソッドが優先的に選択されて、IEnumerableの拡張メソッドが呼びだせないため。'''<br>
  <source lang="c#">
  <source lang="c#">
  ArrayList mixed = new ArrayList { "C#", "Java", 3.141592653, "Groovy", "Scala" };
  ArrayList mixed = new ArrayList { "C#", "Java", 3.141592653, "Groovy", "Scala" };
331行目: 341行目:
  // → System.InvalidCastException:  
  // → System.InvalidCastException:  
  //    型 'System.Double' のオブジェクトを型 'System.String' にキャストできません。
  //    型 'System.Double' のオブジェクトを型 'System.String' にキャストできません。
</source>
<br><br>
== 補足(結果表示用の拡張メソッド) ==
<source lang="c#">
static String ToResult<TSource>(this IEnumerable<TSource> source)
{
    return "{" + string.Join(", ", source) + "}";
}
static String ToResult<TKey, TSource>(this IEnumerable<IGrouping<TKey, TSource>> source)
{
    return source.Select(group => string.Format("Key={0}, Source={1}", group.Key, group.ToResult())).ToResult();
}
  </source>
  </source>
<br><br>
<br><br>

案内メニュー