Нужна поддержка OData для функции Azure.
Сейчас у меня есть все, что реализовано: Top, Skip, Filter, ExpandВыбор вызывает у меня проблему.
[EnableQuery]
Включает поддержку OData.Этот атрибут реализует и фильтр действий, который применяет запросы / фильтры Odata.
Он не работает с функцией из-за отсутствия actionFilterContext, который поступает из базового контроллера в WebApi (aspnetcore).
Я использовал этот ответ, чтобы построить выражение и применить его к IQueryable.
LINQ: динамический выбор
Это работает - однако проблема, с которой я сталкиваюсь сейчас, заключается в том, что у моего возвращаемого типа есть какие-либо необнуляемые свойства - я получаю значения по умолчанию обратно,
Запуск этой функции и $ select = электронная почта - я только хочу, чтобы электронная почта возвращалась.Что верно, но остальные свойства возвращаются.
![enter image description here](https://i.stack.imgur.com/F9QMx.jpg)
По сравнению с запуском этого с проектом webapi и примененным атрибутом [EnableQuery]
![enter image description here](https://i.stack.imgur.com/B7mko.jpg)
Мне нужно иметь возможность создавать и возвращать новый анонимный тип.
Вот как я строю
var expr = CreateSelectStatement<T>(propertyInfos);
return data.AsQueryable().Select(expr).ToList();
...
private static Expression<Func<T, T>> CreateSelectStatement<T>(IEnumerable<PropertyInfo> selectFields)
{
var xParam = Expression.Parameter(typeof(T), "e");
var newStatement = Expression.New(typeof(T));
var bindings = selectFields.Select(prop =>
{
var original = Expression.Property(xParam, prop);
return Expression.Bind(prop, original);
}).ToList();
var xInit = Expression.MemberInit(newStatement, bindings);
return Expression.Lambda<Func<T, T>>(xInit, xParam);
}