微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 方法“部分”返回

我正在开发一种在非常大的表中搜索信息的方法.由于我不使用ORDER BY或查询中的任何特殊内容(只是一个简单的SELECT id,描述FROM抱怨WHERE描述,如’你的文字在这里’),我希望通过返回批量结果来提供更加动态的用户体验这与在Management Studio中运行查询类似.

一些细节,我的调用堆栈并不大,但不是一切都在同一个方法.有buttonSearchClick,performCleanSearch和searchComplainBasedOnDetailInfo,每个都在不同的层(分别是Interface,SearchBLL和SearchDAL).

我想过创建一个异步方法来填充像List< Complain>这样的东西.但这似乎并不干净.我必须制作3层异步.有没有人对如何实现这个有更好的想法?或者这是最好的方法吗?

Edit1:我已经设法使用sqlCommand.BeginExecuteReader连接到连接字符串上的异步处理,以便在查询出现时从查询获取结果…现在我必须想办法让我的DAL方法保持异步,所以上层图层也可以获取结果async …我正在考虑实现某种缓冲…也许是一个队列……

编辑2:我不是在寻找一个寻呼解决方案或推特(滚动和搜索新结果的地方),因为我知道用户必须阅读所有获取的信息……

解决方法

您可以使用BackgroundWorker,在DoWork中让您的批次执行以下操作:

DataTable dt;
int iRecords = 0;
do
{
  dt = new DataTable();
  using(sqlConnection con = new sqlConnection(""))
  {
    sqlCommand cmd = new sqlCommand(string.Format("SELECT TOP 100 * FROM complain where ID > {0}",iRecords));
    sqlDataAdapter sda = new sqlDataAdapter(cmd);
    sda.Fill(dt);
    //Report your progress here
  }
} while(dt.Rows.Count != 0)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐