2013-04-13 4 views
6

私はorderby linq式に問題があります。それは間違った順序で出力を生成します。私はデンマーク出身でデンマークのウェブサイトを作っています。そのため、注文は正確なものでなければなりません。Linq orderby culture(デンマーク語、æøå)

var model = (from w in db.News 
       orderby w.Title 
       select w).ToList(); 

出力は次のとおりです:

1, 123 
2, æøå 
3, hallo 
4, know 

正しい順序は次のようにする必要があります:私はこれを修正するにはどうすればよい

1, 123 
2, hallo 
3, know 
4, æøå 

ここ

は私のクエリですか?

+0

SQL Serverの照合は何ですか?あなたのケースでは、デンマーク語かデンマーク語 - ノルウェー語でなければなりません。 –

答えて

9

あなたは流暢なLINQの構文を使用します場合は、OrderByメソッドに文字列の比較子を渡すことができます。

var model = db.News.OrderBy(w => w.Title, StringComparer.InvariantCulture) 
       .ToList(); 

ところであなたはStringComparer.Create方法であなたの文化に特定の文字列の比較子を作成することができます。発注した場合

StringComparer.Create(new CultureInfo("da-DK"), true) 
+0

おはよう、ありがとうございます。ただし、これはエラーの原因となります。言って: "LINQ to Entitiesは、メソッド 'System.Linq.IOrderedQueryable ........メソッドを認識せず、このメソッドをストア式に変換することはできません。 – aventic

+1

@ KasperHyldalPedersen残念ながら、Linq to Entitiesは顧客比較ツールを使用した注文をサポートしていません。これはSQLに変換できないためです。 AsEnumerable()呼び出しを追加することで、クライアント側に注文を移動することをお勧めします。db.News.AsEnumerable()。OrderBy(...) –

+1

Aha、問題なくAsEnumerable()がトリックを行いました。あなたの助けをありがとう、私はこの問題のために徹夜していた可能性があります:)あなたに十分に感謝することはできません。 – aventic

関連する問題