Сообщение об ошибке в вопросе было вызвано тем, что в запрашиваемом a и в запрашиваемом b отсутствовало удаляемое значение.
IQueryable a = getA();
IQueryable b = getB();
IQueryable res = from ab in a.Union(b)
select {
prop = ab.prop,
deletable = ab.type == CONSTANT_TYPE &&
(from d in deletableTable
where key = CONSTANT_KEY
select d).FirstOrDefault().RenderCode == CONSTANT_RENDER_CODE
};
return res;
getA
и getB
первоначально вернули объекты со свойством prop
.
Если вы хотите сделать from ab in a.Union(b) select deletable = 12
, даже если 12 это константа из вашего кода, поле deletable
должно быть объявлено в querybable a и в queryable b, иначе вы получите ошибку из вопроса.
Я добавил объявление deletable
, чтобы исправить ошибку:
getA() {
from a ...
select new {
prop,
deletable = false //add field, to use union
}
}
getB() {
from b ...
select new {
prop,
deletable = false //add field, to use union
}
}