c# – 方法“部分”返回
发布时间:2020-12-15 21:48:57 所属栏目:百科 来源:网络整理
导读:我正在开发一种在非常大的表中搜索信息的方法.由于我不使用ORDER BY或查询中的任何特殊内容(只是一个简单的SELECT id,描述FROM抱怨WHERE描述,如’你的文字在这里’),我希望通过返回批量结果来提供更加动态的用户体验这与在Management Studio中运行查询类似.
我正在开发一种在非常大的表中搜索信息的方法.由于我不使用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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |