2011-07-10 22 views
0

私は日付で注文したいデータの表を持っています。私の日付フィールドは、データベース上で次の形式のvarcharです。 dd/mm/yyyylinq to sql orderby date

次のコードでデータを返そうとしています。

var q = from na in db.NewsArticles orderby (Convert.ToDateTime(na.articleCreated).ToString("yyyy-MM-dd")) descending select na; 
return q; 

ただし、次のエラーが発生します。

Method 'System.String ToString(System.String)' has no supported translation to SQL. 

誰かが正しい方向に向いてくれますか? DB照合があなたの日付フォーマットをMACHしていないようですので

+0

これは、日付がyyyy-mm-ddの形式で格納されている理由です。 –

答えて

4

.ToString("yyyy-MM-dd")

var q = 
    from na in db.NewsArticles 
    orderby Convert.ToDateTime(na.articleCreated) descending 
    select na; 

EDIT
をスキップ、あなたはこれを試すことができます。

var q = db.NewsArticles.AsEnumerable().OrderByDescending(x => 
      DateTime.Parse(x, new CultureInfo("en-GB", false).DateTimeFormat)) 

どこに "EN-GB"あなたの書式が使われる文化です。 (それを変更する必要があるかもしれません)

+0

これがスローします。 varcharデータ型をdatetimeデータ型に変換すると、範囲外の値が返されました。 – Dooie

+0

データを失うことなく列の種類を変更することはできませんが、どのような照合を使用する必要がありますか? – Dooie

+0

最良の解決策は、列を「DateTime」に変更することです。または、データベースからソートを試みることができます。私の編集を参照してください。 – Magnus