Мы пытаемся облегчить написание строго типизированного кода во всех областях нашей системы, поэтому вместо установки var sortColumn = "FirstName"
мы хотели бы сказать sortOption = (p => p.FirstName)
.Это прекрасно работает, если sortOption имеет тип Expression<Func<Person, object>>
(мы фактически используем дженерики в нашем коде, но это не имеет значения).Однако мы сталкиваемся с проблемами для отношений «многие ко многим», потому что это обозначение нарушается.
Рассмотрим простой код:
internal class Business
{
public IQueryable<Address> Addresses { get; set; }
public string Name { get; set; }
}
internal class Address
{
public State MyState { get; set; }
}
internal class State
{
public string Abbreviation { get; set; }
public int StateID { get; set; }
}
Возможно ли иметь такой тип MemberExpression
определить столбец StateID от бизнеса?Опять же, целью использования этого является не возвращение объекта StateID, а просто идентификация этого свойства из этого объекта (для сортировки, фильтрации и других целей).
Мне кажется, что должно бытькакой-то способ сделать это, даже если он не такой красивый, как foo = business.Addresses.SomeExtension(a => a.State.StateID);
.Действительно ли это возможно?
Если вам нужно больше информации, взгляните на мой старый вопрос .С тех пор мы значительно обновили код, но это должно дать вам общее подробное представление о контексте этого вопроса.