Я пытаюсь получить перечислимую коллекцию из массива словаря.Или я должен сказать, что я пытаюсь написать метод расширения для своих объектов словаря, которые хранят массивы, чтобы возвращать элемент IEnumerable, когда результат равен нулю.для этого), который я извлекаю в определенных точках поиска.извлеченные данные используются в запросах Linq, объединениях и т. д., но у меня возникают проблемы, когда набор данных не существует.
Возвращение пустого набора (0 счетчиков) решило бы мою проблему.то, что я пока имею, это (упрощенный код конечно)
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;
}
// позже в коде есть что-то вроде:
dic.TryGetValue(1).Count()
//or a linq join
from a in anothertable
join d in dic.TryGetValue(1) on a.ID equals d.ID
То, что я пытаюсь достичь, является общимметод расширения, как показано ниже:
public static IEnumerable<T> TryGetValue<Tkey,TValue>(this IDictionary<Tkey, TValue> source, Tkey ItemKey)
{
// same code...
// returning retVal = new T[0].AsEnumerable();
}
Я продолжаю приближаться, но никогда точно не ... Я хотел бы сохранить параметры метода расширения простыми.Это прохождение Т, которое продолжает меня ловить.
Если кто-то может помочь, пожалуйста, пришлите мне свой фид обратно.
большое спасибо заранее!