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

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

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

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

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

textual
Листинг программы
  1. [Serializable]
  2.   public class Ware
  3.   {
  4.     public int WareId { get; set; }
  5.     public string Category { get; set; }
  6.     public string Name { get; set; }
  7.     public string Supplier { get; set; }
  8.   }
  9.  
  10.   internal class WareStorage<T> where T:IDictionary<int,Ware>
  11.   {
  12.     private readonly IDictionary<int, Ware> _dictionary;
  13.  
  14.     public WareStorage()
  15.     {
  16.       _dictionary = Activator.CreateInstance<T>();
  17.     }
  18.     public void LoadFromXml(string path)
  19.     {
  20.      
  21.       var ser = new XmlSerializer(typeof(Ware[]));
  22.       using (var fs = new FileStream(path,FileMode.Open,FileAccess.Read))
  23.       {
  24.         var res = ser.Deserialize(fs) as Ware[];
  25.         foreach (var value in res)
  26.         {
  27.           if (!_dictionary.ContainsKey(value.WareId))
  28.             _dictionary.Add(new KeyValuePair<int, Ware>(value.WareId, value));
  29.         }
  30.       }
  31.     }
  32.  
  33.     public void SaveToXml(string path,Ware[] wares)
  34.     {
  35.       var ser = new XmlSerializer(typeof(Ware[]));
  36.       using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write))
  37.       {
  38.         ser.Serialize(fs, wares);
  39.       }
  40.     }
  41.  
  42.     public Ware FindByKey(int wareId)
  43.     {
  44.       if(!_dictionary.ContainsKey(wareId))
  45.         throw  new Exception("Комплектущиего с таким Id не найдено");
  46.       return _dictionary[wareId];
  47.     }
  48.  
  49.     public Ware[] FindByCategory(string categoryName)
  50.     {
  51.       return _dictionary.Where(x => x.Value.Category.Equals(categoryName)).Select(x => x.Value).ToArray();
  52.     }
  53.   }
  54.  
  55. static void Main(string[] args)
  56.     {
  57.       //var wares = new List<Ware>();
  58.       //for (int i = 0; i < 5; i++)
  59.       //{
  60.       //  wares.Add(new Ware {Category = "Категория " + i, Name = "Компл." + i, Supplier = "Постащик" + i, WareId = i + 1});
  61.       //}
  62.       var storage = new WareStorage<Dictionary<int,Ware>>();
  63.       storage.LoadFromXml(@"C:\wares.xml");
  64.       var ware = storage.FindByKey(4);
  65.       var wareByCat = storage.FindByCategory("Категория " + 1);
  66.       //storage.SaveToXml(@"C:\wares.xml", wares.ToArray());
  67.       Console.ReadKey();
  68.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы