C#でLinqを使ったプログラムを作成していると、下記のエラーが発生することがあります。
エラー CS0266 型 'System.Collections.Generic.IEnumerable<string>' を
'System.Linq.Enumerable' に暗黙的に変換できません。
明示的な変換が存在します (cast が不足していないかどうかを確認してください)
原因
これは、プログラム中でIEnumerableクラスを使用している時、ネームスーペースをしてしておらず、System.Collections.GenericのIEnumerableなのか、System.LinqのIEnumerableなのか曖昧なためです。
対処法
以下のようにネームスペースを指定すればよいです。
変更前
IEnumerableクラスのネームスペースが未指定
public IEnumerable<string> getTitles() {
...
var titles = foo.Select( x => x.Title );
return titles;
}
変更後
戻り値の型指定でIEnumerableクラスのネームスペースを明示する
public System.Collections.Generic.IEnumerable<string> getTitles() {
...
var titles = foo.Select( x => x.Title );
return titles;
}
もしくは、ファイルの先頭で、using句を使ってネームスペースを明示する
using System.Collections.Generic;
...
public IEnumerable<string> getTitles() {
...
var titles = foo.Select( x => x.Title );
return titles;
}
こちらもおススメ