我试图按照用C#编写的.Net应用程序中的名称对产品列表进行排序,以获取通过命令从SQL Server数据库获得的相同列表: select * from Products order by ProductName应用程序对数据库的排序方式与数据库不同
不幸的是,应用程序排序的行为与数据库排序不同。它可能与排序规则有关:数据库具有SQL_Latin1_General_CP1_CI_AS排序规则。
如何让应用程序完全像数据库那样对这些字符串进行排序?
谢谢。
更新:我终于通过使用代码来自下面的意见,并改变比较选项序号取得了良好的效果:
私人CompareOptions myOptions = CompareOptions.Ordinal;
而且,此链接包含与SQL排序一些非常有用的信息:http://www.siao2.com/2005/11/08/490305.aspx
感谢。它还没有工作,但这可能是正确的方向。 这里是我现在要测试的代码:
((List)orderDetails).Sort(new 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);
}
}
仍然没有结果。
您认为如何?我如何从数据库中获取信息,了解我应该使用哪种文化?
谢谢。