2011-07-10 127 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. 

有人能指出我在正確的方向嗎?

+0

這就是爲什麼日期以yyyy-mm-dd –

回答

4

跳過.ToString("yyyy-MM-dd")

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

編輯
由於DB整理似乎不馬赫您的日期格式,你可以試試這個:

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

其中 「EN-GB」是使用格式的文化。 (您可能需要更改)

+0

格式存儲的原因;將varchar數據類型轉換爲日期時間數據類型導致超出範圍的值。 – Dooie

+0

我不能在不丟失數據的情況下更改列類型,但我應該使用什麼整理? – Dooie

+0

最好的解決方案是將列更改爲'DateTime'。或者你可以嘗試從數據庫中進行排序,看看我的編輯。 – Magnus