我最近将VS2015项目升级到VS2017。我将.NET Framework升级到4.7.2,但是现在出现以下问题
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;
}
错误是
'IDataReader'不包含'Select'的定义,找不到可以接受的扩展方法'Select'接受类型为'IDataReader'的第一个参数(您是否缺少using指令或程序集引用?)>
我确实在使用System.Linq,在References中使用System.Core。有什么想法吗?
答案 0 :(得分:4)
IDataReader没有实现IEnumerable
接口,因此没有Select
等LINQ方法。我建议您可以实现自己的Select
扩展方法:
public static IEnumerable<TResult> Select<TResult>(this IDataReader reader,
Func<IDataReader, TResult> selector)
{
while (reader.Read())
{
yield return selector(reader);
}
}