2011-07-10 92 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