2016-02-27 50 views
0

我有一個包含值的列表A1,A2,A3,A4 ... A10 ...從數據庫獲取的值按此順序排列。但是,當使用linq時,訂單更改爲A1,A10,A2,A20,A3 .....即使沒有使用按默認排序的順序也是按升序排列。有什麼辦法可以禁用這個默認排序?在linq c中禁用默認排序#

public static string[] GetCompleteAutoCompleteItemsUsingDataTable(this DataTable AutoCompleteTable, string strPrefixText, int Count) 
     { 
      string AutoCompleteFieldName = AutoCompleteTable.Columns[1].Caption; 
      List<string> objlistMain = new List<string>(); 
      if (!string.IsNullOrEmpty(strPrefixText)) 
      { 
       strPrefixText = strPrefixText.ToLower().RemoveSpecialCharactersFromString(); 
       objlistMain = (from dr in AutoCompleteTable.Select("[" + AutoCompleteFieldName + "] <> ''").AsEnumerable() where dr.Field<string>(AutoCompleteFieldName).ToLower().RemoveSpecialCharactersFromString().StartsWith(strPrefixText) select dr.Field<string>(AutoCompleteFieldName)).Take(Count).ToList<string>(); 

       if (objlistMain.Count < Count && AutoCompleteTable.Rows.Count > objlistMain.Count) 
       { 
        List<string> objlist = (from dr in AutoCompleteTable.Select("[" + AutoCompleteFieldName + "] <> ''").AsEnumerable() where dr.Field<string>(AutoCompleteFieldName).ToLower().RemoveSpecialCharactersFromString().Contains(strPrefixText) && !objlistMain.Contains(dr.Field<string>(AutoCompleteFieldName)) select dr.Field<string>(AutoCompleteFieldName)).Take(Count - objlistMain.Count). ToList<string>(); 
        foreach (string str in objlist) 
        { 
         objlistMain.Add(str); 
        } 
       } 
      } 
      else 
      { 
       objlistMain = (from dr in AutoCompleteTable.Select().AsEnumerable() select dr.Field<string>(AutoCompleteFieldName)).Take(Count).ToList<string>(); 
      } 
      return objlistMain.Distinct().ToArray(); 
     } 
+0

你想要什麼命令? –

+0

我不希望它被排序 –

+0

也許你所說的升序是插入順序? –

回答

0

如果你沒有,一旦你從數據庫中檢索它,你看到的數據進行排序對數據進行排序,那麼這可能是因爲對數據庫執行的SQL-query的。任何差異SQL-query都可能導致不同的順序。這是因爲JOIN ing爲其他表格或GROUP ing結果,並且使用INDEXES

一般而言,您不能確定如果不使用ORDER BY中的SQL-query表示結果未排序;有可能。

p.s.在您的案例中潛入的主題也是natural sorting。這種排序A1, A2, A10而不是A1, A10, A2

+0

使用linq後,sql結果的順序是A1,A2,... A10 –