2012-01-05 1 views
3

Я использую DbCommand от: System.ComponentModel.ComponentDbCommand с Linq?

Я строю объект с Params:

DbCommand command = _webERPDB.GetStoredProcCommand("mySp"); 
_webERPDB.AddInParameter(command, "@a", DbType.Int32, policyId); 
_webERPDB.AddInParameter(command, "@b", DbType.Int32, appPolicyPrintQaCheckListId); 
_webERPDB.AddInParameter(command, "@c", DbType.Int32, createdBy); 

И теперь, я хочу, чтобы перебирать его с помощью LINQ:

IEnumerable<DbParameter> t = from a in command.Parameters select a; 

но это генерирующая следующую ошибку:

enter image description here

ответ

7
IEnumerable<DbParameter> t = command.Parameters.Cast<DbParameter>(); 

Вы должны использовать Cast<T>(), потому что тип Parameters является DbParameterCollection, который реализует IEnumerable (не общий), но не IEnumerable<T>. Вы можете написать

IEnumerable t = command.Parameters; 
+0

Зачем мне бросать? это уже коллекция DbParameter ... –

+0

См. обновленный ответ. – ken2k