2010-06-28 2 views
0

J'ai un Dictionnaire> dans C#Rechercher la chaîne en C# LINQ

Dictionary<string,List<string>> l_dictRawData; 

qui contient les valeurs sont les suivantes:

   KEYS     VALUES 
    l_dictRawData["TamilNadu"] => VALUE[0] = "Chennai" VALUE[1] = "Madurai" 
    l_dictRawData["Andhra"] = > VALUE[0] = "Hyderabad" VALUE[1] = "Secundarabad" 
    l_dictRawData["Karnataka"] = > VALUE[0] = "mysore" VALUE[1] = "Bangalore" 

Alors j'ai le InputList

List<string> l_lstInput = new List<string>(); 

qui contient les données sont:

l_lstInput[0] = "Hyderabad" 
    l_lstInput[1] = "Secundarabad" 

Le résultat sera le (i.e) si le dictionnaire l_dictRawData contient à la fois "Hyderabad" et "Secundarabad", puis sélectionnez la valeur KEy.

string l_strOutPut = "Andhra"; 

Voici mon code:

      var Query = from l_strData in l_dictRawData 
          from l_strItem in l_lstInput 
          where l_strData .Value.Contains(l_strItem) 
          select new 
          { 
           CityName = l_strItem, 
           StateName = l_strData.Key 
          }; 

Comment puis-je obtenir le ouput LINQ en C#

Si u avez des questions plz me faire savoir

+2

Plz envoyer le codz? Non merci. –

Répondre

3

Eh bien, un Dictionary avec ce que vous recherchez dans la valeur n'est pas vraiment une infrastructure de données appropriée pour cela, mais vous pouvez le faire:

var query = from pair in l_dictRawData 
      where pair.Value.SequenceEquals(l_lstInput) 
      select pair.Key; 

Cela donnera tous les les clés correspondant à la valeur donnée. Vous pouvez ensuite utiliser l'un des query.First(), query.FirstOrDefault(), query.Single() ou query.SingleOrDefault() pour obtenir un résultat unique, en fonction de vos besoins.

+0

Merci .... J'ai obtenu le résultat- Rajesh – user374191

+0

skeet: Pouvez-vous me dire quelle structure de données est adaptée à la question ci-dessus – user374191

+0

@ user374191: Si vous essayez de rechercher * de * la paire de valeurs, je D suggérer un 'Dictionary , chaîne>' de sorte que votre paire de valeurs est la clé dans le dictionnaire. –

0

Je ne l'ai pas testé mais vous devriez constater que cela fonctionne, ou bien est assez proche de modifier à vos besoins:

var matches = (
from kvPair in l_dictRawData 
where l_lstInput.Contains(kvPair.Value) 
where l_lstInput.Contains(kvPair.Key) 
select new { 
MatchedVal = kvPair.Value 
} 
).ToList(); 

Ceci renverra toutes les valeurs clés du dictionnaire où l'élément dictionnaire contient à la fois des éléments présents dans votre collection l_lstInput.

+0

@ user374191: J'ai fourni une solution à votre question initiale et vous avez ensuite mis à jour votre question. C'est assez frustrant, dois-je continuer à mettre à jour ma réponse parce que vous n'avez pas pris le temps d'expliquer votre question correctement à chaque fois? –

0

Pour contient l'option de travailler comme nous devrions également considérer le cas de la chaîne par exemple. regarder ci-dessous

searchUserName = searchUserName.ToLower(); 
      var results = orgUserEmailSettingsTOList.Where(c => c.UserDisplayName.ToLower().Contains("" + searchUserName + "")).ToList(); 

     return results; 
Questions connexes