Документы по динамическим выражениям
Принимая во внимание эту примерную структуру класса -
public class Apprentice
{
public Guid Id { get; set; }
public string GivenName { get; set; }
public string FamilyName { get; set; }
public virtual ICollection<ApprenticeAddress> Addresses { get; set; }
}
public class ApprenticeAddress
{
public Guid Id { get; set; }
public Guid ApprenticeId { get; set; }
public virtual Apprentice Apprentice { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string Town { get; set; }
public Guid CountyId { get; set; }
public virtual County County { get; set; }
public string PostCode { get; set; }
public bool IsPrimaryAddress { get; set; }
public Guid AddressTypeId { get; set; }
public virtual AddressType AddressType { get; set; }
}
Исходя из вышеприведенной документации и предоставленной примерной структуры класса, я изо всех сил пыталсяскомпилировать динамический селектор для выбора случайных свойств, не известных во время выполнения.Основная проблема, с которой я столкнулся, заключается в выборе, скажем, свойства AddressLine1 для любых адресов, связанных с возвращенным учеником.
В этом примере LINQ select выполнит то, что мне нужно, но может кто угоднопомогите преобразовать это в строку инициализатора объекта данных?
var r = repo.GetAll().ToList().Select(x =>
new
{
x.FamilyName,
addresses = x.Addresses.SelectMany(y => y.AddressLine1)
});
UPDATE
Если я использую следующий код и строку инициализатора объекта данных, переданную в метод расширения Select,Я получаю анонимный объект, который мне нужен -
var whereTxt = "Active";
var selectTxt = "new (GivenName AS GivenName,FamilyName AS FamilyName)";
var repo = Storage.DataContext.GetRepository<Apprentice>();
return repo.GetAll().Where(whereTxt).Select(selectTxt).AsQueryable();
Проблема, с которой я сталкиваюсь, заключается в определении синтаксиса получения определенных свойств (не известных во время выполнения) из вложенных коллекций