我想基于标识列字段逐个从sql server表中获取每条记录为
C#中单独的方法调用。我想迭代超过50000行。
例如:我想从SQL表中获取第一行并基于行值,需要做一些C#编码过程。然后需要获取第二行,所以。
最好的方法是什么,而不是通过时间维护单个数据读取器连接?
请帮助。
答案 0 :(得分:0)
您是否考虑过使用
`foreach (DataRow dr in Table_Name.Rows)`
{
variable1 = dr["Column1_Name"];
variable2 = dr["Column2_Name"];
}
答案 1 :(得分:0)
你可以这样做。 TEntity可以是表示数据库中一行的类。
public class MyEnumerable<TEntity> : IEnumerable<TEntity> where TEntity : class, new()
{
private Entity _lastElement;
public IEnumerator<TEntity> GetEnumerator()
{
TEntity nextElement = // get next element based on _lastElement from database
// check if a next element exists
if (nextElement != null)
{
_lastElement = nextElement;
yield return _lastElement;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}
但我认为这样做的表现真的很糟糕,因为对于每一行,你都有创建/打开连接的开销(应该由ADO.NET汇集)并获取查询结果。 您可以使用它:
MyEnumerable<Entity> myEnumerable = new MyEnumerable<Entity>();
foreach (var entity in myEnumerable)
{
// do work
}