我不知道我问的是否可能。这就是我在这里讨论的原因。
我有一个自定义列表,其中包含所有用户及其详细信息。
在我的应用程序启动时,我从数据库中填充它。换句话说,它包含数据库的副本。因此,我不是每次都从数据库中提取数据,而是想在此列表上执行操作。
我编写了一个从数据库表中搜索用户的查询,我想将其翻译为此列表,以便我与数据库相关的处理最小化。这是单个设备应用程序,没有其他用户修改应用程序。
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开始。
想要查询通配符所具有的类似功能。
答案 0 :(得分:1)
非常含糊的问题。你的问题到底是什么?可以在程序中执行所有操作,并仅在需要或应用程序退出时将数据发送到数据库。有几种方法可以做到这一点。
你开始的方式还可以。您可以以任何您想要的方式更改用户,最后再次运行它们(或者只是那些已经更改的用户)并编写一个方法将它们全部更新到数据库。
<强> [编辑] 强>
看到你的评论我假设你在谈论linq。
使用Linq(System.Linq),您可以在列表中更改,订购,跳过或取..等等。
当你想要应用排序/排序的时候/你可以使用像
这样的东西selectedList.Where(m=>m.StartsWith("AS"));
selectedList.OrderBy(m=>m.firstname);
最好不要将selectedList设置为此,因为您要继续使用它。
所以无论你设置什么数据源。您可以将它的itemssource或datacontext设置为上述任何一个。