在通用列表上执行操作

时间:2011-05-21 20:13:05

标签: c# sql list optimization

我不知道我问的是否可能。这就是我在这里讨论的原因。

我有一个自定义列表,其中包含所有用户及其详细信息。

在我的应用程序启动时,我从数据库中填充它。换句话说,它包含数据库的副本。因此,我不是每次都从数据库中提取数据,而是想在此列表上执行操作。

我编写了一个从数据库表中搜索用户的查询,我想将其翻译为此列表,以便我与数据库相关的处理最小化。这是单个设备应用程序,没有其他用户修改应用程序。

List<Users> selectedUsers = new List<Users>();
sql_cmd = new SqlCommand();
sql_cmd.Connection = sql_con;
#region First Name Search
if (category == SearchCategory.ByFirstName)
{
    sql_cmd.Parameters.Add("@firstName", SqlDbType.VarChar).Value = Value;
    sql_cmd.CommandText = "SELECT * FROM AccountsUsers  WHERE accFirstName Like @firstName+'%'";
    SqlDataReader reader = sql_cmd.ExecuteReader();
    if (reader.HasRows == true)
    {
        while (reader.Read())
        {
            Users userToAdd = new Users();
            userToAdd.userId = int.Parse(reader["Id"].ToString());
            userToAdd.firstName = reader["accFirstName"].ToString();
            userToAdd.lastName = reader["accLastName"].ToString();
            //  GetAccountsDetails(userToAdd.userId, ref userToAdd);
            selectedUsers.Add(userToAdd);
        }
    }
}

我要做的是我没有为用户提供数据库的搜索列表。例如,List包含许多用户,如果在搜索框中我输入AS,那么我可以过滤掉所有条目从AS开始。 想要查询通配符所具有的类似功能。

1 个答案:

答案 0 :(得分:1)

非常含糊的问题。你的问题到底是什么?可以在程序中执行所有操作,并仅在需要或应用程序退出时将数据发送到数据库。有几种方法可以做到这一点。

你开始的方式还可以。您可以以任何您想要的方式更改用户,最后再次运行它们(或者只是那些已经更改的用户)并编写一个方法将它们全部更新到数据库。

<强> [编辑]

看到你的评论我假设你在谈论linq。

使用Linq(System.Linq),您可以在列表中更改,订购,跳过或取..等等。

当你想要应用排序/排序的时候/你可以使用像

这样的东西
selectedList.Where(m=>m.StartsWith("AS")); 
selectedList.OrderBy(m=>m.firstname);

最好不要将selectedList设置为此,因为您要继续使用它。

所以无论你设置什么数据源。您可以将它的itemssource或datacontext设置为上述任何一个。