小编use*_*862的帖子

搜索大量文本列表的最快方法

我有一个用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秒)?这是我的客户的要求.所以,任何帮助都非常感谢.请帮忙...

c# regex search text

6
推荐指数
1
解决办法
2976
查看次数

Google Youtube API v3 播放列表标题

我正在尝试将使用 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)

youtube-api

2
推荐指数
1
解决办法
2629
查看次数

标签 统计

c# ×1

regex ×1

search ×1

text ×1

youtube-api ×1