Как я могу объединить две сущности, используя Linq - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть две модели RP и RPHistory, как показано ниже, они обе содержат одни и те же данные. Как я могу объединить их для создания единого списка данных из двух?

 public class RP: 
    {
        public int ID { get; set; }
        public int RPID { get; set; }
        public string Name { get; set; }
        public int ProductID { get; set; }
    }

У меня второй модал как

 public class RPHistory: 
    {
        public int ID { get; set; }
        public int RPID { get; set; }
        public string Name { get; set; }
        public int ProductID { get; set; }
    }

У меня есть этот код для получения данных из RP:

var RPs = await Context.RP.Where(b => b.ProductID  == request.ID).ToListAsync();

Как я могу присоединиться, чтобы обновить вышеуказанный код, чтобы включить RPHistory?

1 Ответ

0 голосов
/ 17 апреля 2020

Попробуйте что-нибудь вроде:

var RPs = await Context.RP.Where(b => b.ProductID  == request.ID)
                          .Select(x=> new {
                                           x.ID, 
                                           x.RPID, 
                                           x.Name, 
                                           x.ProductID, 
                                           History = Context.RPHistory
                                                            .Where(y=> y.RPID == x.RPID)
                                                            .ToList() //Note nested Select 
                                                                      //assuming List and 
                                                                      //there can be more 
                                                                      //than one entry
                                           }
                                  ).ToListAsync();

РЕДАКТИРОВАТЬ:

Если вы хотите конкретный класс, просто сделайте:

public class RpWithHistory {
  public int ID;
  public int RPID;
  public string Name;
  public int ProductID;
  public List<RPHistory> History;
}

// Then in your code:

var RPs = await Context.RP.Where(b => b.ProductID  == request.ID)
                              .Select(x=> new RpWithHistory {
                                               ID = x.ID, 
                                               RPID = x.RPID, 
                                               Name = x.Name, 
                                               ProductID = x.ProductID, 
                                               History = Context.RPHistory
                                                                .Where(y=> y.RPID 
                                                                        == x.RPID)
                                                                .ToList()
                                               }
                                      ).ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...