Я пытаюсь построить нечто вроде условных запросов, чтобы получить только необходимые данные из базовой базы данных.
В настоящее время у меня есть следующий запрос (который отлично работает)
var eventData = dbContext.Event.Select(t => new
    {
        Address = true ? new AnonymousEventGetAddress
        {
            AddressLine1 = t.Address.AddressLine1,
            CityName = t.Address.AddressCityName
        } : new AnonymousEventGetAddress(),
    });
Если я изменю его на
var includeAddress = true; // this will normally be passed as param
var eventData = dbContext.Event.Select(t => new
    {
        Address = includeAddress ? new AnonymousEventGetAddress
        {
            AddressLine1 = t.Address.AddressLine1,
            CityName = t.Address.AddressCityName
        } : new AnonymousEventGetAddress(),
    });
Я получаю следующую ошибку:
Тип 'AnonymousEventGetAddress' появляется в двух структурно несовместимых инициализациях в одном запросе LINQ to Entities. Тип может быть инициализирован в двух местах в одном запросе, но только если в обоих местах установлены одни и те же свойства, и эти свойства заданы в одном порядке.
Что я делаю неправильно здесь (как с true он работает) и как это можно исправить?
Я знаю, что изменение else -part на
new AnonymousEventGetAddress
{
    AddressLine1 = null,
    CityName = null
}
будет работать. Но если я изменю порядок свойств, это также не сработает.
Используемый класс определяется следующим образом:
public class AnonymousEventGetAddress : BaseAnonymousObject<AnonymousEventGetAddress>
{
    public string AddressLine1 { get; set; }
    public string CityName { get; set; }
}
 тогда как BaseAnonymousObject<AnonymousEventGetAddress> определяется:
public abstract class BaseAnonymousObject<TAnonymous>
    where TAnonymous : BaseAnonymousObject<TAnonymous>
{
    // this is used in case I have to return a list instead of a single anonymous object
    public static Expression<Func<IEnumerable<TAnonymous>>> Empty => () => new TAnonymous[]{}.AsEnumerable();
}
