Подскажите примерно как делать, не понимаю - 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();
}