【发布时间】:2015-11-18 19:36:52
【问题描述】:
我有一个 linq 查询,里面是月份名称。我想要按月份(1 月、2 月、3 月、...)排序的结果。
目前我有以下但它给了我和错误:
LINQ to Entities 无法识别方法“System.DateTime” Parse(System.String)' 方法,并且该方法无法翻译 到商店表达式中。
var shockValues = (from s in ctx.Shocks
where s.ID == id
orderby DateTime.Parse(s.MonthName)
select new
{
val = s.MonthName + "=" + s.ShockValue
});
【问题讨论】:
-
为什么不
orderby s.MonthName -
如果
MonthName是string,您需要执行order by s.MonthName == "Jan" ? 1 : s.MonthName == "Feb" ? 2 : ...之类的操作。 -
因为它是一个字符串,不会按月份正确排序
-
天哪,没有更好的办法:(
-
@user441521 如果您想在数据库中进行排序,则不是。即使在原始 SQL 中,我认为您也必须对
CASE执行某些操作才能使其正常工作。
标签: c# entity-framework linq