Преобразование универсального списка классов A и B с одинаковыми свойствами в Список класса C с использованием универсальных - PullRequest
0 голосов
/ 12 июля 2019

У меня есть 3 класса, DOb, Patient и LookUp

public class Dog
    {  public int Id { get; set; }
        public DateTime DOB { get; set; }
        public string FirstName { get; set; }
        public string Display { get; set; }
        public int qqQMS { get; set; }
        public string Description { get; set; }
    }

public class Patient
    {
       public int Id { get; set; }
        public Guid Patid { get; set; }
        public string FirstName { get; set; }
        public string Display { get; set; }
        public string Description { get; set; }
    }
 public class LookUp : ILookUp
        public int Id { get; set; }
        public string Display { get; set; }
        public string Description { get; set; }
    }

Я пытаюсь легко взять список или список, преобразовать его в список. Я задавал этот вопрос раньше и никогда не понимал его, безиспользуя Dynamic, я бы предпочел более плавный путь без Dynamics

Я пробовал

 List<LookUp> Look = doggy.Cast<LookUp>().ToList();

  List<LookUp> patLook = pat.Cast<LookUp>().ToList();

также пробовал это, но я не доволен этим

public static IList<LookUp> ToLookUp<T>( IEnumerable<T> source)  
        {
            List<LookUp> list = (from prop in source
                                 select new LookUp
                                 {
                                     Display = prop.Display ?? "",
                                     Description = prop.Description ?? "",
                                     Id = prop.Id
                                 }).ToList();
            return list;
        }

метод расширения может работать

1 Ответ

0 голосов
/ 12 июля 2019

Вам потребуется реализовать интерфейс на ваших классах , бетон Lookup класса на данный момент не требуется

public class Dog : ILookUp { ... }

public class Patient : ILookUp { ... }

Таким образом, вы можете привести к своему интерфейсу и использовать его

var listOfDogs = new List<dog>();

var LookupList = listOfDogs.Cast<ILookup>();

Я бы с удовольствием, но Dob ad Patient созданы в другом месте, и я не могу их изменить

Тогда нет более простого способа сделать это, вы не можете сделать общее решение без размышления, вам придется проецировать на Lookup, как вы делаете, или сделать выражение длякаждый тип

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...