我試圖按照用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);
}
}
仍然沒有結果。
您認爲如何?我如何從數據庫中獲取信息,瞭解我應該使用哪種文化?
謝謝。