Поток прерывался

Можно легко создать собственный дополнительный метод на IEnumerable или IQueryable:

public static IOrderedEnumerable<TSource> OrderByWithDirection<TSource,TKey>
    (this IEnumerable<TSource> source,
     Func<TSource, TKey> keySelector,
     bool descending)
{
    return descending ? source.OrderByDescending(keySelector)
                      : source.OrderBy(keySelector);
}

public static IOrderedQueryable<TSource> OrderByWithDirection<TSource,TKey>
    (this IQueryable<TSource> source,
     Expression<Func<TSource, TKey>> keySelector,
     bool descending)
{
    return descending ? source.OrderByDescending(keySelector)
                      : source.OrderBy(keySelector);
}

Да, Вы теряете способность использовать выражение запроса здесь - но откровенно я не думаю, что Вы на самом деле извлекаете выгоду из выражения запроса так или иначе в этом случае. Выражения запроса являются большими для сложных вещей, но если Вы только делаете единственную операцию, более просто просто поместить ту одну операцию:

var query = dataList.OrderByWithDirection(x => x.Property, direction);
31
задан Guido 16 September 2009 в 14:47
поделиться

2 ответа

Это исключение генерируется вызовом Server.Transfer для остановки выполнение текущего метода - то же самое происходит, если вы выполняете Response.Redirect .

У вас есть два варианта: ThreadAbortException / повторно выполнить Server.Transfer

  • Убедитесь, что вы делать только Server.Transfer местами там, где его не поймают (рекомендуется)
  • РЕДАКТИРОВАТЬ: Поцарапайте это, http://support.microsoft.com/kb/312629 предлагает еще пару предложений, но я все же рекомендую # 2 выше.

    40
    ответ дан 27 November 2019 в 21:59
    поделиться

    Caling Server.Transfer вызовет Response.End, который всегда генерирует исключение ThreadAbortException. Это «специальное» исключение, потому что, хотя оно может быть поймано в блоке catch, оно всегда будет повторно выбрано в конце блока catch. Я бы хотел, чтобы ваш журнал ошибок игнорировал ThreadAbortExceptions.

    8
    ответ дан 27 November 2019 в 21:59
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: