2011-05-21 4 views
0

Je ne sais pas si ce que je demande est possible ou non. C'est pourquoi je suis ici pour discuter.Effectuer une opération sur la liste générique

J'ai une liste personnalisée qui contient les informations de tous les utilisateurs et leurs détails.

Sur mon application, je commence à le remplir à partir de la base de données. En d'autres termes, il contient la copie de la base de données. Donc, au lieu de tirer des données à chaque fois de la base de données, je veux effectuer une opération sur cette liste.

J'ai écrit une requête qui recherche les utilisateurs depuis la table de base de données et je veux la traduire pour cette liste afin que mon traitement lié à la base de données soit minimum. Ceci est une application d'appareil unique et aucun autre utilisateur ne modifie l'application.

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); 
     } 
    } 
} 

Ce que j'indend à faire est la liste de recherche que j'ai pas la base de données pour la liste exemple users.for contient de nombreux utilisateurs et si dans la boîte de recherche i entrer AS alors je peux filtrer toutes les entrées commençant par COMME. Vous souhaitez des fonctionnalités similaires à celles de la requête de caractères génériques.

+0

Comment est votre LINQ? –

+0

pas brillant dans cette section, mais je veux voir comment cela peut être fait parce que LINQ est une chose intelligente –

+1

Ai-je raison de penser que vous voulez remplir cette liste une fois, puis manipuler les données en elle. Si c'est le cas, le code que vous avez est OK, vous avez juste besoin d'enlever le filtrage. Une fois la liste remplie, vous pouvez utiliser LINQ pour manipuler les éléments dont vous avez besoin. Par exemple, si vous voulez une liste d'utilisateurs avec un prénom d'Afnan, vous pouvez utiliser 'var afnans = selectedUsers.Where (user => user.firstName ==" afnan ")' –

Répondre

1

Question assez vague. Quelle est exactement votre question? Il est bien sûr possible de tout faire dans le programme et d'envoyer des données à la base de données uniquement à la demande ou à la sortie de l'application. Il y a plusieurs moyens de le faire.

La façon dont vous démarrez est correcte. Vous pouvez modifier les utilisateurs comme bon vous semble et à la fin vous les exécutez à nouveau (ou seulement ceux qui ont été modifiés) et écrivez une méthode pour les mettre à jour tous dans la base de données.

[Modifier]

En voyant votre commentaire Je suppose que vous parlez de LINQ. Avec Linq (System.Linq), vous pouvez modifier, ordonner, sauter ou prendre ... et ainsi de suite sur les listes.

Quand/où vous voulez appliquer la commande/le tri, vous pouvez utiliser des trucs comme

selectedList.Where(m=>m.StartsWith("AS")); 
selectedList.OrderBy(m=>m.firstname); 

Il est préférable de ne pas mettre le selectedList à ce puisque vous voulez continuer à l'utiliser.

Donc, quelle que soit la source de données que vous définissez. Vous pouvez définir itssource ou datacontext à l'un de ceux ci-dessus.

+0

désolé, probablement j'ai écrit la question un clair.Que je indend à faire est la liste de recherche que je l'ai fait pas la base de données pour les utilisateurs.Par exemple contient de nombreux utilisateurs et si dans la boîte de recherche je sais 'AS 'alors je peux filtrer toutes les entrées Commençant par AS. Vous souhaitez des fonctionnalités similaires à celles de la requête de caractères génériques. –

+0

Oh oui c'était ce que je cherchais .Merci –

Questions connexes