Linq to sql linq到sql orderby日期

Linq to sql linq到sql orderby日期,linq-to-sql,sql-order-by,Linq To Sql,Sql Order By,我有一个数据表,我想按日期订购。我的日期字段是数据库上的varchar,格式如下;年月日 我试图用以下代码返回我的数据 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.S

我有一个数据表,我想按日期订购。我的日期字段是数据库上的varchar,格式如下;年月日

我试图用以下代码返回我的数据

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.
有人能给我指一下正确的方向吗?

跳过
.ToString(“yyyy-MM-dd”)

编辑
由于DB排序规则似乎不符合日期格式,您可以尝试以下方法:

var q = db.NewsArticles.AsEnumerable().OrderByDescending(x => 
           DateTime.Parse(x, new CultureInfo("en-GB", false).DateTimeFormat))
其中“en GB”是使用格式的区域性。(您可能需要更改)

跳过
.ToString(“yyyy-MM-dd”)

编辑
由于DB排序规则似乎不符合日期格式,您可以尝试以下方法:

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

其中“en GB”是使用格式的区域性。(您可能需要对此进行更改)

这就是日期以yyyy mm DDTH格式存储的原因这就是日期以yyyy mm DDTH格式存储的原因;将varchar数据类型转换为datetime数据类型导致值超出范围。我无法更改列类型而不丢失数据,但应使用什么排序规则?最好的解决方案是将列更改为
datetime
。或者,您可以尝试对数据库进行排序,请参阅使用您的编辑工具工作的my edit.Thx。我将研究转换db上的列以获得永久解决方案;将varchar数据类型转换为datetime数据类型导致值超出范围。我无法更改列类型而不丢失数据,但应使用什么排序规则?最好的解决方案是将列更改为
datetime
。或者,您可以尝试对数据库进行排序,请参阅使用您的编辑工具工作的my edit.Thx。我将研究如何将db上的列转换为永久解决方案。