Je tente d'obtenir une collection numérisable à partir d'un tableau de dictionnaire. Ou devrais-je dire, j'essaye d'écrire une méthode d'extension pour mes objets de dictionnaire qui stockent des tableaux pour retourner un article IEnumerable quand le résultat est nul. Im utilisant des dictionnaires pour stocker des ensembles de données de tableau (il y a des raisons de vitesse pour cela), que j'extrais à certains points de recherche. les données extraites sont utilisées dans les requêtes Linq, les jointures etc. mais j'ai des problèmes quand un ensemble de données n'existe pas. Renvoyer un jeu de lignes vide (0 compte) résoudrait mon problème. ce que j'ai est jusqu'à présent ce (code simplifié ofcourse)Ienumerable Méthode d'extension pour les appels de tableaux de dictionnaire
public class Supplier
{
public string ID {get;set}
public string Name {get;set}
}
private sups[] = new Supplier[10];
Dictionary<int,Supplier[]> dic = new Dictionary<int, Supplier[]>();
dic.Add(1,sups[]);
public static IEnumerable<Supplier> TryGetValue<Tkey>(this IDictionary<Tkey, Supplier[]> source, Tkey ItemKey)
{
Supplier[] foundList;
IEnumerable<Supplier> retVal;
if (source.TryGetValue(ItemKey, out foundList))
{
retVal = foundList.AsEnumerable();
}
else
{
retVal = new Supplier[0].AsEnumerable();
}
return retVal;
}
// plus loin dans le code il y a quelque chose comme:
dic.TryGetValue(1).Count()
//or a linq join
from a in anothertable
join d in dic.TryGetValue(1) on a.ID equals d.ID
Quelle im essayant de acheive est une méthode d'extension générique comme ci-dessous :
public static IEnumerable<T> TryGetValue<Tkey,TValue>(this IDictionary<Tkey, TValue> source, Tkey ItemKey)
{
// same code...
// returning retVal = new T[0].AsEnumerable();
}
Je continue de me rapprocher mais je ne suis jamais exactement là .... Je voudrais garder les paramètres de la méthode d'extension simples. C'est le passage de T qui ne cesse de m'attraper.
Si quelqu'un peut vous aider alors s'il vous plaît envoyez-moi votre feed back.
merci beaucoup d'avance!
'Enumerable.Empty()' –