Я пытаюсь отсортировать список продуктов по их названию в приложении .Net, написанном на C #, чтобы получить тот же список, который я получил бы из базы данных SQL Server по порядку:
выберите * из заказа товаров по ProductName
К сожалению, сортировка приложения ведет себя иначе, чем сортировка базы данных. Вероятно, это связано с сопоставлением: в базе данных имеется сопоставление SQL_Latin1_General_CP1_CI_AS.
Как я могу заставить приложение сортировать эти строки точно так же, как это делает база данных?
Спасибо.
ОБНОВЛЕНИЕ: я наконец-то получил хороший результат, используя код из комментариев ниже и изменив параметры сравнения на Порядковый:
private CompareOptions myOptions = CompareOptions.Ordinal;
Кроме того, эта ссылка содержит очень полезную информацию, связанную с сопоставлениями SQL: http://www.siao2.com/2005/11/08/490305.aspx
Спасибо. Это еще не работает, но это, вероятно, правильное направление.
Вот код, который я сейчас пытаюсь:
((Список) orderDetails). Сортировка (новый 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 );
}
}
Все еще нет результата.
Что ты думаешь? Как мне получить информацию из базы данных, чтобы узнать, какую культуру мне следует использовать?
Спасибо.