Подтвердить что ты не робот

Ошибка с соединением в Linq для объектов

У меня проблема в запросе, где я хочу объединить 2 списка.

Я хочу объединить записи из таблиц Места и Местоположение в свойство View Model Места.

Fruits = (from e in db.Fruits
           where !e.Excluded
           select new FruitViewModel()
           {
               CodFood = e.CodFood,
               Name = e.Name,
               Color = e.Color,
               Places = (from p in e.Places
                          where !p.Excluded
                          select new FruitViewModel()
                          {
                              CodPlace = p.CodPlace,
                              Name = p.Name
                          }).Union(
                          from r in e.Locations
                          where !r.Excluido
                          select new FruitViewModel()
                          {
                              CodLocation = r.CodLocation,
                              Name = p.Name
                          })
           }),

но это дает мне:

System.NotSupportedException: тип "Project.ViewModel.Fruits.FruitsViewModel" появляется в двух структурно несовместимых инициализациях в рамках одного запроса LINQ to Entities. Тип может быть инициализирован в двух местах в одном запросе, но только если в обоих местах установлены одни и те же свойства, и эти свойства заданы в одном порядке.

Я могу объединиться после выполнения Linq как этот ответ, но я хочу, чтобы все было просто, не меняя слишком сильно этот код, если это возможно - запрос перед отсроченным исполнением.

Как я могу это решить?

4b9b3361

Ответ 1

На основе сообщения об ошибке, похоже, проблема с инициализацией FruitViewModel. Попробуйте следующее:

           Places = (from p in e.Places
                      where !p.Excluded
                      select new FruitViewModel()
                      {
                          CodLocation = "",
                          CodPlace = p.CodPlace,
                          Name = p.Name
                      }).Union(
                      from r in e.Locations
                      where !r.Excluido
                      select new FruitViewModel()
                      {
                          CodLocation = r.CodLocation,
                          CodPlace = "",
                          Name = p.Name
                      })