Подскажите примерно как делать, не понимаю - C#

Узнай цену своей работы

Формулировка задачи:

4. Класс Dictionary <TKey, TValue> Создать текстовый файл для хранения комплектующих и ПК (5 записей): Код_ID Категория Название Поставщик Создать класс Ware с соответствующими полями. Создать коллекцию Dictionary <TKey, TValue> с ключом Код_ID. Заполнить ее из файла. Найти указанный товар по ключу с помощью метода ContainsKey. Отобрать товары по значению (метод ContainsValue), например, Модем. 5. Класс SortedDictionary <TKey, TValue> Реализовать задачи 4 с использованием SortedDictionary <TKey, TValue> Это для считывания
            Dictionary<string, PCC> list = new Dictionary<string, PCC>();
            string s;
            string ID;
            string[] split;
            StreamReader f = new StreamReader("PC.txt");
            while ((s = f.ReadLine()) != null)
            {
                split = s.Split(new Char[] { ',' });  // розбивка на слова
                ID = (split[0].Trim());      //виділення ключа
                list.Add(ID, new PCC(s));   //заповнення колекції
            }
            f.Close();

Решение задачи: «Подскажите примерно как делать, не понимаю»

textual
Листинг программы
[Serializable]
  public class Ware
  {
    public int WareId { get; set; }
    public string Category { get; set; }
    public string Name { get; set; }
    public string Supplier { get; set; }
  }
 
  internal class WareStorage<T> where T:IDictionary<int,Ware>
  {
    private readonly IDictionary<int, Ware> _dictionary;
 
    public WareStorage()
    {
      _dictionary = Activator.CreateInstance<T>();
    }
    public void LoadFromXml(string path)
    {
      
      var ser = new XmlSerializer(typeof(Ware[]));
      using (var fs = new FileStream(path,FileMode.Open,FileAccess.Read))
      {
        var res = ser.Deserialize(fs) as Ware[];
        foreach (var value in res)
        {
          if (!_dictionary.ContainsKey(value.WareId))
            _dictionary.Add(new KeyValuePair<int, Ware>(value.WareId, value));
        }
      }
    }
 
    public void SaveToXml(string path,Ware[] wares)
    {
      var ser = new XmlSerializer(typeof(Ware[]));
      using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write))
      {
        ser.Serialize(fs, wares);
      }
    }
 
    public Ware FindByKey(int wareId)
    {
      if(!_dictionary.ContainsKey(wareId))
        throw  new Exception("Комплектущиего с таким Id не найдено");
      return _dictionary[wareId];
    }
 
    public Ware[] FindByCategory(string categoryName)
    {
      return _dictionary.Where(x => x.Value.Category.Equals(categoryName)).Select(x => x.Value).ToArray();
    }
  }
 
static void Main(string[] args)
    {
      //var wares = new List<Ware>();
      //for (int i = 0; i < 5; i++)
      //{
      //  wares.Add(new Ware {Category = "Категория " + i, Name = "Компл." + i, Supplier = "Постащик" + i, WareId = i + 1});
      //}
      var storage = new WareStorage<Dictionary<int,Ware>>();
      storage.LoadFromXml(@"C:\wares.xml");
      var ware = storage.FindByKey(4);
      var wareByCat = storage.FindByCategory("Категория " + 1);
      //storage.SaveToXml(@"C:\wares.xml", wares.ToArray());
      Console.ReadKey();
    }

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы