タイプのすべての子コントロールを取得する次の関数があります。
private IEnumerable<Control> GetControlsOfType(Control control, Type type)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetControlsOfType(ctrl, type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
ジェネリック型パラメーターを使用して変換しようとしています。
private IEnumerable<T> GetControlsOfType<T>(Control control) where T: Control
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetControlsOfType<T>(ctrl))
.Concat(controls)
.Where(c => c.GetType() == T);
}
コードに のエラーがあります.Concat
。
エラー 6 'System.Collections.Generic.IEnumerable
<T
>' には 'Concat' の定義が含まれておらず、最適な拡張メソッド オーバーロード 'System.Linq.Queryable.Concat<TSource
>(System.Linq.IQueryable<TSource
>, System.Collections.Generic. IEnumerable<TSource
>)' に無効な引数があります
問題を解決するには?