2008-11-10 37 views
2

我试图按照用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); 
    } 
} 

仍然没有结果。

您认为如何?我如何从数据库中获取信息,了解我应该使用哪种文化?

谢谢。

回答

相关问题