Вы можете использовать любой из следующих параметров.
Первый вариант: передать анонимную функцию в OrderBy
return allProperties.OrderBy(m => m.GetCustomAttribute<ExportAttribute>() == null ? -1 :
m.GetCustomAttribute<ExportAttribute>().FieldOrder).ToList();
Второй вариант: создать функцию выбора ключа и передать ее в OrderBy
return allProperties.OrderBy(KeySelector).ToList();
Функция ключевого селектора определена как здесь:
public static int KeySelector(PropertyInfo info)
{
ExportAttribute attr = info.GetCustomAttribute<ExportAttribute>();
return attr == null ? -1 : attr.FieldOrder;
}
Если свойство не имеет ExportAttribute, селектор вернет -1. Вы можете выбрать любое другое значение по умолчанию.
Второй подход позволяет вам определять другие типы селекторов для упорядочения и просто вызывать новый селектор, который вы определили.