Reputation: 1555
I recently upgraded my VS2015 project to VS2017. I upgraded the .NET framework to 4.7.2 but now I get the following problem
using (IDataReader rd = ExecuteCmdAndGetReader(myssqlstring))
{
MyList = rd.Select<myObject>(myObject.Load).ToList();
}
internal SqlDataReader ExecuteCmdAndGetReader(string sql)
{
SqlCommand cmd;
cmd = new SqlCommand(sql, connection);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
The error is
'IDataReader' does not contain a definition for 'Select' and no accessible extension method 'Select' accepting a first argument of type 'IDataReader' could be found (are you missing a using directive or an assembly reference?)
I do have System.Linq in uses and System.Core in References. Any ideas please?
Upvotes: 0
Views: 1788
Reputation: 926
IDataReader doesn't implement the IEnumerable
interface, hence no Select
etc. LINQ methods. I suggest you could implement your own Select
extension method:
public static IEnumerable<TResult> Select<TResult>(this IDataReader reader,
Func<IDataReader, TResult> selector)
{
while (reader.Read())
{
yield return selector(reader);
}
}
Upvotes: 5