Я пытаюсь отсортировать список продуктов по их имени в приложении .Net, написанном на C#, чтобы получить тот же список, который я бы получил из базы данных SQL Server, в порядке: выберите * из заказа продуктов по ProductName
К сожалению, сортировка приложений отличается от сортировки базы данных. Вероятно, это связано с сопоставлением: в базе данных есть сопоставление SQL_Latin1_General_CP1_CI_AS.
Как я могу заставить приложение сортировать эти строки точно так же, как это делает база данных?
Спасибо.
ОБНОВЛЕНИЕ: наконец-то я получил хороший результат, используя код из комментариев ниже и изменив параметры сравнения на Ordinal:
частный CompareOptions myOptions = CompareOptions.Ordinal;
Кроме того, эта ссылка содержит очень полезную информацию, связанную с сопоставлением SQL: http://www.siao2.com/2005/11/08/490305.aspx
Спасибо. Пока не получается, но это, наверное, правильное направление. Вот код, который я сейчас пытаюсь:
((Список) orderDetails) .Sort (новый OrderDetailComparer ());
где OrderDetailComparer:
public class OrderDetailComparer : IComparer<OrderDetail>
{
private CompareInfo myComp = CompareInfo.GetCompareInfo("en-US");
private CompareOptions myOptions = CompareOptions.StringSort;
public int Compare(OrderDetail a, OrderDetail b)
{
if (a == b) return 0;
if (a == null) return -1;
if (b == null) return 1;
return myComp.Compare ( a.Product.ProductNameForSorting, b.Product.ProductNameForSorting, myOptions );
}
}
По-прежнему безрезультатно.
Что вы думаете? Как мне получить информацию из базы данных, чтобы узнать, какую культуру мне следует использовать?
Спасибо.





вам, вероятно, потребуется использовать культуру, в которой вы хотите выполнить сортировку. Посмотрите на пример StringComparer: http://msdn.microsoft.com/en-us/library/system.stringcomparer.currentculture.aspx