Создание Dictionary при наследовании - C#
Формулировка задачи:
Проблема такова, есть абстрактный класс и собственно 2 наследника. Есть list типа базового класса. Как с помощью linq создать dictionary чтобы ключом было поле базового поля, а value- поле одного наследника+поле второго. Все поля типа string.
Решение задачи: «Создание Dictionary при наследовании»
textual
Листинг программы
class Program { static void Main(string[] args) { var list = new List<Base>() { new A() { Field = "Field1", ValueA = "ValueA" }, new B() { Field = "Field2", ValueB = "ValueB" }, new A() { Field = "Field3", ValueA = "ValueA" }, }; var dictionary = list.ToDictionary(k => k.Field, k => { var a = k as A; if (a != null) return a.ValueA; var b = k as B; if (b != null) return b.ValueB; throw new NotSupportedException($"Type {k.GetType()} is not supported"); }); foreach (var pair in dictionary) Console.WriteLine($"{pair.Key}: {pair.Value}"); Console.ReadLine(); } } public class Base { public string Field { get; set; } } public class A : Base { public string ValueA { get; set; } } public class B : Base { public string ValueB { get; set; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д