Создание Dictionary при наследовании - C#

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

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

Проблема такова, есть абстрактный класс и собственно 2 наследника. Есть list типа базового класса. Как с помощью linq создать dictionary чтобы ключом было поле базового поля, а value- поле одного наследника+поле второго. Все поля типа string.

Решение задачи: «Создание Dictionary при наследовании»

textual
Листинг программы
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             var list = new List<Base>()
  6.             {
  7.                 new A()
  8.                 {
  9.                     Field = "Field1",
  10.                     ValueA = "ValueA"
  11.                 },
  12.                 new B()
  13.                 {
  14.                     Field = "Field2",
  15.                     ValueB = "ValueB"
  16.                 },
  17.                 new A()
  18.                 {
  19.                     Field = "Field3",
  20.                     ValueA = "ValueA"
  21.                 },
  22.             };
  23.             var dictionary = list.ToDictionary(k => k.Field, k =>
  24.             {
  25.                 var a = k as A;
  26.                 if (a != null)
  27.                     return a.ValueA;
  28.  
  29.                 var b = k as B;
  30.                 if (b != null)
  31.                     return b.ValueB;
  32.  
  33.                 throw new NotSupportedException($"Type {k.GetType()} is not supported");
  34.             });
  35.  
  36.             foreach (var pair in dictionary)
  37.                 Console.WriteLine($"{pair.Key}: {pair.Value}");
  38.             Console.ReadLine();            
  39.         }
  40.     }
  41.  
  42.     public class Base
  43.     {
  44.         public string Field { get; set; }
  45.     }
  46.  
  47.     public class A : Base
  48.     {
  49.         public string ValueA { get; set; }
  50.     }
  51.  
  52.     public class B : Base
  53.     {
  54.         public string ValueB { get; set; }
  55.     }

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


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

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

11   голосов , оценка 3.727 из 5

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

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

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