Вы можете использовать немного рефлекса для построения дерева выражений следующим образом (это метод расширения):
public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string orderByProperty,
bool desc)
{
string command = desc ? "OrderByDescending" : "OrderBy";
var type = typeof(TEntity);
var property = type.GetProperty(orderByProperty);
var parameter = Expression.Parameter(type, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExpression = Expression.Lambda(propertyAccess, parameter);
var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType },
source.Expression, Expression.Quote(orderByExpression));
return source.Provider.CreateQuery<TEntity>(resultExpression);
}
orderByProperty
- это имя свойства, которое вы хотите заказать, и если передать true как параметр для desc
, будет сортироваться в порядке убывания; в противном случае будет сортироваться в порядке возрастания.
Теперь вы должны иметь возможность делать existingStudents.OrderBy("City",true);
или existingStudents.OrderBy("City",false);
Похоже, я ответил на свой вопрос, поэтому пишу здесь, чтобы помочь другим. С помощью моего администратора Azure мы создали тестовую базу данных SQLDB (с соответствующим новым сервером БД) в той же группе ресурсов, что и БД, которую мне нужно переместить. Затем я заполнил новую БД тестовыми данными и настроил синхронизацию данных с локальной БД на том же локальном экземпляре. Начальная синхронизация проверена нормально. Затем мы переместили новый тестовый сервер и БД (должны переместить оба) в новую группу ресурсов, снова в рамках той же подписки / арендатора. По завершении (примерно через 5 минут) мы смогли увидеть, что, хотя приложение, работающее с БД, на самом деле все еще работает нормально, как ожидалось, и обнаружилась группа синхронизации данных, агент синхронизации данных не появился. Попытка выполнить синхронизацию вручную из группы синхронизации привела к ошибке. Таким образом, кажется, что перемещение БД по группам ресурсов нарушит синхронизацию данных SQL, и для исправления вам потребуется восстановить синхронизацию с нуля. Я не прошел все эти шаги в тестовой базе данных, но обновлю этот ответ, если завтра вечером возникнут дополнительные проблемы после фактического переноса производства.
На следующую ночь: оказалось, что фактический ход не был проблемой. База данных отображалась не сразу, даже после выхода из системы и повторного входа, но приложение никогда не закрывалось, и через 5-10 минут после перехода в «Домой», затем базы данных SQL на портале, вуаля, база данных отображалась в правильном Группа ресурсов И и Группа синхронизации, и Агент синхронизации также отображаются после выбора «Синхронизировать с другими базами данных». Не уверен, что это было время или переход к дому в первую очередь. Несмотря на это, ручная синхронизация работала как ожидалось. Поэтому не уверен, почему наш тестовый пример не сработал, но может показаться, что SQLDB перемещается в новую группу ресурсов в том же клиенте, и подписка имеет хорошие шансы сохранить синхронизацию данных с локальным экземпляром. Как всегда, однако, ваш пробег может отличаться.