2016-05-02 55 views
0

これはIDを昇順で並べ替えるために使用したコードです。 2DataGridviewで昇順にIDをソートするには

、11、= 1に、このリスト1、11、2

このコードソート:

SqlCeDataAdapter da = new SqlCeDataAdapter("select * from Contact_List order by Id ASC", con); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     dataGridView1.DataSource = dt; 

それだけで、私はIDが例えば数

の最初の数字を並べ替えます

しかし、リストを並べ替えるには1,2、11

どのようにすればいいですか?

+0

データを数値として保存するか、並べ替え前に数値に変換します。これはC#ではなくSQLです。 – Fanda

答えて

0

いいえ、最初の桁でソートされていません。値がテキストであり数字でないかのようにソートされます。テキストの順序付けは辞書的に行われるので、 "AA"が "B"の前にくるように "11"が "2"の前に来ます。私はあなたのid列がVARCHARのようなテキスト値であると推測しています。数字だけを格納する場合は、実際にはINTのような数値にする必要があります。

一方で、あなたは正しい動作を得ることができる必要があります - あなたはだけが実際に変換することにより、数値を格納していると仮定すると:あなたがどんなを持っている場合、

select * from Contact_List order by CONVERT(INT, Id) ASC 

をいずれかの方法データベーススキーマを制御するには、適切なデータ型で値を格納し、ジョブを実行させる必要があります。

+0

数字が450.10の場合はどうすればいいですか?どのデータ型を>に変更する必要がありますか? 0を表示する必要があります – Secret

+0

私はそれをGoogleにお勧めしたいと思います。あなたが選ぶのに役立つ資料がたくさんあります。 –

+0

@Secret検索の時間を節約するために、数値データ型を使用できます。 https://msdn.microsoft.com/en-us/library/kkeyy55s(v=vs.80).aspx – ryantpayton

0

私はidにvarcharフィールドを使用していると仮定しています。 intとしてキャストし、テーブル内のデータ型を並べ替えたり変更したりします。

select CAST(Id AS int) from Contact_List order by CAST(Id AS int) ASC 
+0

あなたは基本的に私の答えをコピーし、最高のために願っていますか? –

+0

@roryapタイミングはすべてです... – ryantpayton

+0

@roryapそれでもそれはあなたとは違う方法です。それはあなたが使いたいものに依存します。 http://stackoverflow.com/questions/12919682/are-cast-and-convert-the-same-in-sql – ryantpayton

関連する問題