Вы неправильно установили требуемую сборку Crystal Reports, вам нужно установить время выполнения Crystal Reports на каждом клиентском компьютере, а не версию для VS, это не сработает, просто скопировав assmblies вместе с вашим приложением.
Вы можете получить правильные инсталляторы из SAP напрямую, возможно, вам понадобится создать бесплатную учетную запись. 32Bit 64Bit
Привет,
В дополнение к красивому решению, данному @Jon Skeet, мне также нужны были ThenBy и ThenByDescending, поэтому я добавляю его на основе его решения:
public static IOrderedEnumerable<TSource> ThenByWithDirection<TSource, TKey>(
this IOrderedEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
bool descending)
{
return descending ?
source.ThenByDescending(keySelector) :
source.ThenBy(keySelector);
}
В отношении того, как это реализовано, это изменяет метод - от OrderBy / ThenBy до OrderByDescending / ThenByDescending. Однако вы можете применить сортировку отдельно к основному запросу ...
var qry = from .... // or just dataList.AsEnumerable()/AsQueryable()
if(sortAscending) {
qry = qry.OrderBy(x=>x.Property);
} else {
qry = qry.OrderByDescending(x=>x.Property);
}
Любое использование? Вы можете создать весь «порядок» динамически, но он более задействован ...
Другой трюк (в основном соответствующий LINQ-to-Objects) заключается в использовании множителя -1/1. Это действительно полезно для числовых данных, но это навязчивый способ добиться того же результата.
false
для descending
.
– Jon Skeet
6 March 2013 в 15:11
Как насчет упорядочения desc по желаемому свойству,
blah = blah.OrderByDescending(x => x.Property);
И затем делать что-то вроде
if (!descending)
{
blah = blah.Reverse()
}
else
{
// Already sorted desc ;)
}
Не слишком ли медленный () обратный ()?