0

データベースに、数値を文字列として保持する文字列フィールドがあります。以下のようにLinqのこのフィールドに基づいて注文したいのですが、orderbyがうまく機能しない場合。このように注文します

1-2-3-25-11-30-50 ===> 1-11-2-25-3-30-50

   IQueryable<Tbl_Melk> Melks =
   from melk in Tbl_Melk
   where melk.Mantaghe == Mantaghe && melk.Hoze == Hoze && melk.Block == Block
   orderby melk.Melk
   select melk;
4

3 に答える 3

1

実際には、値をアルファベット順に並べ替えているため、これは正しい順序です。LINQは、データを数値型に強制変換しない限り、データに数値が含まれていることを認識できません。希望する方法で並べ替える1つの方法については、この質問を確認してください。

Linq-数字、文字の順に並べる

于 2012-05-19T04:34:51.557 に答える
1

モーリスが正しいと言うこと、あなたはこれを試すことができます:

var Melks = from melk in Tbl_Melk.ToList()
let integer = int.Parse(melk)
orderby integer
where melk.Mantaghe == Mantaghe && melk.Hoze == Hoze && melk.Block == Block
orderby melk.Melk
select melk;

しかし、それではパフォーマンスとIQuerableインターフェイスが失われます。

于 2012-05-19T04:38:33.293 に答える
1

文字列をゼロでLeftPadします。

私の頭の中から、LeftPadをサポートしていないEntityFrameworkの欠如に:

....
orderby SqlFunctions.Replicate("0", 10 - melk.Melk.Length) + melk.Melk
于 2016-09-01T06:00:25.863 に答える