12,930
回編集
細 (Wiki がページ「LINQの拡張メソッド一覧」を「LINQ - 拡張メソッド一覧」に、リダイレクトを残さずに移動しました) |
編集の要約なし |
||
2行目: | 2行目: | ||
C#のLINQを種類ごとにまとめて、簡単なサンプルを記述する。<br> | C#のLINQを種類ごとにまとめて、簡単なサンプルを記述する。<br> | ||
<br> | <br> | ||
ここでは、結果の表示において、独自の拡張メソッドToResult(this IEnumerable)を使用している。<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を返す。 | | AsEnumerable || IEnumerableを返す。<br>1対多のディクショナリである。<br>例えば、〜.ToLookup()["hoge"]と実行すると、hogeに紐付く要素の集合(IEnumerable)が返る。 | ||
|} | |} | ||
</center> | </center> | ||
<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> | </source> | ||
<br><br> | <br><br> |