Как вернуть класс со списком, используя LINQ в C #?

#linq

#linq

Вопрос:

У меня есть одна таблица «Профили» и «Адреса» Таблица профилей содержит одну запись о человеке, а таблица адресов содержит его несколько адресов.

Я хочу написать запрос LINQ, чтобы вернуть запись одного человека с несколькими адресами в одном запросе. Итак, я создал один пользовательский класс с «ProfileID», «FirstName» и списком адресов.

Мне нужен такой вывод, пожалуйста, помогите.

1 (ProfileID)

Отметить (имя пользователя)

——Sanday (адрес один)

——Stronsay (адрес два)

——Foula (адрес три)

 public class profileDetails
    {
        public int profileIdData { get; set; }
        public string firstNameData { get; set; }
        public List<lstAddress> lstAddressData { get; set; }
    }
   public class lstAddress
    {
        public int addressId { get; set; }
        public string address { get; set; }
    }

    //This is my query
     var result = (from profile in DbContext.Profiles
                      join address in DbContext.Addresses
                      on profile.profileId equals address.addressId
                      select new profileDetails()
                      {
                          profileIdData = profile.profileId,
                          firstNameData = profile.firstName,
                          lstAddressData = new { address.addressId, address.address }.toList()
                      }
                     )
 

Комментарии:

1. Взгляните на объединение в группу . Или, лучше, свойства навигации.

Ответ №1:

Вы пробовали использовать метод Include? Что-то вроде этого:

 var result = (from profile in DbContext.Profiles
              join address in DbContext.Addresses
              on profile.profileId equals address.addressId).Include("lstAddressData");
 

(имя lstAddressData может быть неправильным в моем примере выше, оно относится к ссылочному свойству, которое вы хотите заполнить элементами адреса)