2008-11-10 39 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); 
    } 
} 

仍然沒有結果。

您認爲如何?我如何從數據庫中獲取信息,瞭解我應該使用哪種文化?

謝謝。

回答

相關問題