2011-07-11 39 views
0

我正在C#(學習C#)中構建一個工資覈算應用程序,該應用程序將集成到SAP Business 1. 在SAP中創建表時,SAP會自動生成兩個字段用戶定義的表格。一個是代碼 - (主鍵),另一個是名稱。兩者都是varchar/alphanumeric類型。C#Linq to SQL通過代碼重新排序的問題(varchar)

我有這個查詢返回的結果,雖然不是我想要的時尚。 I

Code Name U_Tax_year U_Minimum_pay U_Maximum_pay 
0  0  2011     1   1 
1  1  2011     2   2 
10  10  2011    11  11 
11  11  2011    12  12 
2  2  2011     3   3 
3  3  2011     4   4 
4  4  2011     5   5 
5  5  2011     6   6 
6  6  2011     7   7 
7  7  2011     8   8 
8  8  2011     9   9 
9  9  2011    10  10 

這是由於代碼和名稱不是整數字段。

下面是我的查詢:

// Get service instances 
      var nhifTableSlabService = Program.Kernel.Get<INHIFTableSlabService>(); 

//Query database 
      var nhiftableSlabs = from tb in nhifTableSlabService.GetAllNHIFTableSlabs() 
           where tb.U_Tax_year.ToString().Trim().Equals(cb_tax_year.Text.Trim(), StringComparison.CurrentCultureIgnoreCase) 
           orderby int.Parse(tb.Code.ToString()) descending 
           select tb; 

      if (nhiftableSlabs.Any(x => x != null) 
      { 
       // Enable datagridview 
       dataGridView1.Visible = true; 

       ...bla bla 
      } 

我怎麼得到的結果,轉換代碼爲整數,這樣我終於可以顯示的遞減順序代碼的結果?

回答

1

使用Convert.ToInt32()而不是int.Parse,你很好去。有關更多詳細信息,請參見here

+0

感謝您的回覆。但即使使用Convert.ToInt32(),我仍然有同樣的問題 –

+0

你會得到一個異常,或者它只是不能正確排序嗎?您是否嘗試使用分析器查看生成的sql語句? – Variant

+0

它只是沒有正確排序。我在Visual Studio 2010上使用了intelliTrace,生成的sql語句沒有order by子句。只是從表中選擇...我必須遇到一些語法問題 –