我有一个 linq 查询,其中包含月份名称。我希望结果按月份(一月、二月、三月……)排序。
目前我有以下内容,但它给了我一个错误:
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
});
你的选择很少。您可以使用一长串可选运算符将名称映射到数字
order by s.MonthName == "Jan" ? 1 : s.MonthName == "Feb" ? 2 : ...
您可以在数据库中创建一个表,将名称映射到数值
var shockValues = (from s in ctx.Shocks
join o in MonthOrder on s.MonthName equals o.MonthName
where s.ID == id
orderby o.MonthNumber
select new
{
val = s.MonthName + "=" + s.ShockValue
});
或者在内存中进行排序
var shockValues = (from s in ctx.Shocks
where s.ID == id
select new
{
s.MonthName,
s.ShockValue
})
.AsEnumerable()
.OrderBy(s => DateTime.ParseExact(s.MonthName, "MMM", CultureInfo.InvariantCulture).Month)
.Select(s => new
{
val = s.MonthName + "=" + s.ShockValue
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)