У меня есть метод контроллера Web API, который запрашивает БД и возвращает данные:Возможна ли замена задания?
public IQueryable<DeviceInformation> GetAllRegisteredDevices()
{
var result = this.db.CustomDeviceInstallations.Select(install => new DeviceInformation
{
Platform =
install.Platform == NotificationPlatform.Apns ? PLATFORM.iOS :
install.Platform == NotificationPlatform.Gcm ? PLATFORM.Android :
PLATFORM.Unknown
});
return result;
}
Какие ошибки мне в этом методе является решение о платформе быть назначены. Мне потребуется такое же решение в других контекстах, и поэтому хотел бы извлечь его, так что я закончил с:
public Expression<Func<NotificationPlatform, PLATFORM>> ToDeviceInfoPlatformExpression()
{
return p =>
p == NotificationPlatform.Apns ? PLATFORM.iOS :
p == NotificationPlatform.Gcm ? PLATFORM.Android :
PLATFORM.Unknown;
}
Вопрос теперь: как я могу использовать мое выражение? Platform = ????
Возможно ли вообще?
Примечание: Я знаю, что вместо этого я мог бы использовать метод расширения, а также использовать коммутационный футляр для удобства чтения. Однако приведенный выше код используется в контексте Entity Framework и должен быть выражением. Это также исключает использование Expression.Compile()
.
Неясно, почему вы используете дерево выражения на всех. Что случилось с вашим исходным кодом? –
Главным образом любопытство. Вторичный: с одним и тем же назначением несколько раз без копирования кода. – Krumelur
Вау, честно говоря, меня удивляют «близкие» голоса и голосование. Я думал, что это будет интересный вопрос. Но, похоже, я был совершенно неправ. – Krumelur