我有一个用C#编写的Windows应用程序,需要从数据库加载250,000行并提供"键入时搜索"功能,这意味着只要用户在文本框中输入内容,应用程序就需要搜索所有250,000条记录(其中是btw,单列,每行1000个字符)使用like搜索并显示找到的记录.
我遵循的方法是:
1-该应用程序将所有记录加载到一个类型中 List<EmployeeData>
while (objSQLReader.Read())
{
lstEmployees.Add(new EmployeesData(
Convert.ToInt32(objSQLReader.GetString(0)),
objSQLReader.GetString(1),
objSQLReader.GetString(2)));
}
Run Code Online (Sandbox Code Playgroud)
2-在TextChanged事件中,使用LINQ,我搜索(与正则表达式的组合)并将其附加IEnumerable<EmployeesData>到处于虚拟模式的ListView.
String strPattern = "(?=.*wood*)(?=.*james*)";
IEnumerable<EmployeesData> lstFoundItems = from objEmployee in lstEmployees
where Regex.IsMatch(Employee.SearchStr, strPattern, RegexOptions.IgnoreCase)
select objEmployee;
lstFoundEmployees = lstFoundItems;
Run Code Online (Sandbox Code Playgroud)
处理3-4 RetrieveVirtualItem事件以显示ListView中的项目以显示该项目.
e.Item = new ListViewItem(new String[] {
lstFoundEmployees.ElementAt(e.ItemIndex).DateProjectTaskClient,
e.ItemIndex.ToString() });
Run Code Online (Sandbox Code Playgroud)
虽然lstEmployees从SQL Server加载列表的加载速度相对较快(1.5秒),但要在TextChanged上搜索,使用LINQ搜索需要7分钟以上.通过执行LIKE搜索直接搜索SQL Server 只需不到7秒.
我在这做错了什么?如何更快地进行此搜索(不超过2秒)?这是我的客户的要求.所以,任何帮助都非常感谢.请帮忙...
我正在尝试将使用 google youtube 的第 2 版 API 开发的应用程序移植到第 3 版。
如何使用版本 3 API 获取播放列表的标题?我们可以使用版本 2 获取播放列表的标题。但是,当我查询播放列表的片段时,我得到的标题与它在 youtube 网站上显示的不同。
版本 3 有什么不同吗?
我正在使用 Google 的 .NET API 库。如果这有帮助。
有人可以帮忙吗?
编辑时间:2014 年 5 月 20 日
抱歉回复延迟。我尝试使用 Google 的第 3 版 API,当我尝试使用
var channelsListRequest = youtubeService.Channels.List("snippet,contentDetails");
设置channelsListRequest.ForUserName后,我调用var channelsListResponse = await channelsListRequest.ExecuteAsync();
从响应中,我将使用以下方法发送播放列表:
foreach (var channel in channelsListResponse.Items)
{
var uploadsListId = channel.ContentDetails.RelatedPlaylists.Uploads;
var nextPageToken = "";
while (nextPageToken != null)
{
var playlistRequest = youtubeService.Playlists.List("id,snippet,contentDetails,status,player");
playlistRequest.Id = uploadsListId;
playlistRequest.MaxResults = 50;
playlistRequest.PageToken …Run Code Online (Sandbox Code Playgroud)